createjs进阶—更好的利用flashCC(animateCC)进行项目实战

  • 内容
  • 评论
  • 相关

本人一直认为createjs的成功之处就在于使用flashcc进行开发不仅非常方便,而且非常迅速。举个例子,我现在要做个游戏,需要主角人物跑动的特效,你自己完全可以不动手,写出来一个框架后,让动画师自己加上去,导出后把文件给你或者上传svn即可。甚至,动画师自己可以替换资源来看动画做出来的效果。

那么我今天就来讲讲如何更好的使用flashcc。

首先我还是拿出上次的demo,但是这次我不直接放在舞台上,而是在库里做一个类链接。

QQ图片20160223133326

发布出来,大家可以看到已经有了view1

QQ图片20160223133609

接下来只要在js上加上

var view1;

view1= new lib.view1();

stage.addChild(view1);

屏幕上就可以显示出刚才在flashcc里面经过类链接的影片剪辑。

但是有时候有些额外的对象或者方法是需要放在view1里面的,那怎么办呢?

我们新建一个View1的类把flashcc里的view1给复合进去。

QQ图片20160223135737

然后创建这个类把它放在舞台上

QQ图片20160223135802

有些人会问,为什么我不直接继承view1,而是继承container复合view1呢?

是这样的,flashcc创建对象的时候是经过特殊处理的,它创建的对象是不能直接继承,所以我们要复合。

好了,加上一些框架和自适应的代码。

QQ图片20160223140311

我们的demo就可以显示出来了

QQ图片20160223140501

这是pc端上的效果,移动端可以打开chrome的模拟器,代码也是兼容的。

基本所有程序要用到的动画,图片,都可以用这种方法创建。(注意命名就可以了)

这里还有一个诀窍,我们可以在帧上加上dispatchEvent,来告知程序动画结束了,或者播放到哪个关键地方了。

比如这里我们在动画的末尾帧上加上:

this.stop();

if(model) model.dispatchEvent("complete");

QQ图片20160223141254

然后在js上新建一个model来专门处理接收事件,记得要是EventDispatcher类

model = new createjs.EventDispatcher();

然后侦听

 model.addEventListener("complete",function (){

    alert("complete");

  })

我们的结果就出来了

QQ图片20160223141540

这个方法可以用在某些游戏角色里,把所有动作放在时间轴上,然后做完哪个动作就可以告知程序,程序可以做出相应的逻辑。(不过已现在的createjs的movieclip效率,如果要做些烧cpu的游戏我推荐还是用精灵图也就是Sprite)

 

好了,我们的项目做完了,之后如果要换皮,直接交给动画师就ok了,动画师只要在你有类链接的影片剪辑里修改,改好后把assets.js文件给你覆盖就可以了,十分方便。

demo链接:http://pan.baidu.com/s/1mgTA77y

1542183776360437.jpg

评论

23条评论
  1. Gravatar 头像

    匿名 回复

    下载了您的demo 用animate 通过浏览器预览 根本看不到啥,直接是白屏

    • Gravatar 头像

      ajex 回复

      @匿名 教程看仔细啊 这里的animate的demo 只是用做动画库的 舞台上本来就什么都没有的 你直接预览当然什么都没有 要通过自己写代码new出来 看main.js和index.html啊

  2. Gravatar 头像

    匿名 回复

    为什么我用cc做动画导出很卡呢

    • Gravatar 头像

      ajex 回复

      @匿名 导致卡的原因很多,多数是因为新手不懂优化动画,你可以看看博客里性能优化的帖子

  3. Gravatar 头像

    匿名 回复

    请问可以自定义事件吗?

  4. Gravatar 头像

    www 回复

    看了demo,脚本里的
    _this.btn.addEventListener("click",function (){
    alert("play");
    _this.play();
    })
    btn在类库里找不到,是关联到哪里,我看导出来的js就有个btn,是不是通过导出来的js来定这个btn的命名?

    • Gravatar 头像

      ajex 回复

      @www 通过animateCC里面命名的

  5. Gravatar 头像

    dywade 回复

    刚接触createjs ,请教个问题:flashcc 必须要用?。

    • Gravatar 头像

      ajex 回复

      @dywade 这个就跟关公的大刀一样,关公可以不用大刀,但是 用大刀更厉害点

  6. Gravatar 头像

    叶子花 回复

    page01 这个原件是怎么弄出来的,还带着view

    • Gravatar 头像

      ajex 回复

      @叶子花 在库里做了类链接后,就可以直接用类链接的名字new出来

  7. Gravatar 头像

    匿名 回复

    dfsdfsdf

  8. Gravatar 头像

    匿名 回复

    alert('hehe');

  9. Gravatar 头像

    匿名 回复

    alert('哈哈')

  10. Gravatar 头像

    匿名 回复

    请问这段代码的作用是?
    function handleFileLoad(evt) {
    if (evt.item.type == "image") { images[evt.item.id] = evt.result; }
    }

  11. Gravatar 头像

    匿名 回复

    请问这段代码的作用是?

  12. Gravatar 头像

    匿名 回复

    我看了你写的例子,有一点不知道怎么用,我想写个方法在show里,需要用到view1里面的影片,那个路径我要怎么写的,比如我想这个方法控制view1里面的btn按钮,要怎么写这个btn的路径的?

  13. Gravatar 头像

    回复

    alert('play')事件在哪里出来的?

    • Gravatar 头像

      ajex 回复

      @豪 fla demo中的帧上写的

发表评论

电子邮件地址不会被公开。