Egret社区
本帖最后由 Kuma 于 2014-11-21 17:18 编辑

官方的MovieClip感觉跟Flash的MovieClip完全不搭边……于是自己写了个MovieCli类,开源出来,望大家斧正

注:使用本MC类,需要类同官方的MovieClip一样,先在Flash里面导出动画的PNG文件和egret格式的JSON资源描述文件,教程:http://docs.egret-labs.org/post/manual/displaycon/movieclip.html

使用示例:
     1.MC的新建:
               var myMc:cooron.MovieClip = new cooron.MovieClip(RES.getRes("mcData"), RES.getRes("mcAsset"));                this.addChild(myMc);
                myMc.frameRate = 24;

     2.动画播放顺序的控制
           继续播放:myMc.play();
           停止播放:myMc.stop();
           前往指定帧播放:myMc.gotoAndPlay(1); 或者myMc.gotoAndPlay("jump");
           前往指定帧停止:myMc.gotoAndStop(20);或者myMc.gotoAndStop("stand");
           前进一帧:myMc.prevFrame(false);或者myMc.prevFrame(true);或者myMc.prevFrame();这里的参数可选,默认true,当参数为true时,如果当前帧时动画序列的最后一帧,那么会跳转到第一帧上,为false时,如果当前帧时动画序列的最后一帧,那么会停止在最后一帧。
           后退一帧:myMc.nextFrame(false);或者myMc.nextFrame(true);或者myMc.nextFrame();这里的参数可选,默认true,当参数为true时,如果当前帧时动画序列的第一帧,那么会跳转到最后一帧上,为false时,如果当前帧时动画序列的第一帧,那么会停止在第一帧。
     3.为动画添加帧脚本事件(帧动作)
           假如你希望动画播放在第2帧的时候执行一个事件,可以像这样给你的mc添加一个脚本:myMC.addFrameScript(2, this.playerStop, this, myMc);当然,帧号2也可以替换为字符串帧标签。移除帧事件调用:myMC.removeFrameScript(2, this.playerStop, this, myMc); 其中this.playerStop时你自己定义的需要在第二帧上执行的事件,第4个参数是需要传入到playerStop里面的参数,可选。
     4.动画的销毁和释放
           你如果需要移除一个MC,那么除了要将这个mc从它的parent上removeChild外,你还需要调用myMc.destroy();
     5.附上本类可以调用公共属性和方法列表:
           属性:
               withData:get&set 用来挂载在MC的自定义数据,类型为任意类型,
               totalFrames:get 当前动画序列帧总和
               currentFrame:get 当前所处的帧号
               currentFrameLabel:get 当前所处的帧标签
               currentLabel:get 当前所出的帧标签组
               playing:get 当前是否正在播放
               frameRate::get&set 当前动画的帧频率
               movieClipGroup:get 当前播放的动画组(类似flash的场景)
               reverse:get&set 是否反向播放
           方法:
               gotoAndPlay(frame: any, movieGroup: string = undefined): void   到指定动画组的指定帧开始播放
               gotoAndStop(frame: any, movieGroup: string = undefined): void  到指定动画组的指定帧停止播放
               play():void  继续播放
               stop(): void 停止播放
               prevFrame(repeat: boolean = true): void 跳转到上一帧停止
               nextFrame(repeat: boolean = true): void 跳转到下一帧停止
               addFrameScript(frame: Object, script: Function, thisObj: any, params: any = undefined, movieGroup: string = undefined): boolean 向指定帧添加帧脚本
               removeFrameScript(frame: Object, script: Function = undefined, params: any = undefined, movieGroup: string = undefined) 移除指定帧添加的帧脚本
               destroy() 销毁

下载: MovieClip.zip (2.84 KB, 下载次数: 177)
分享到 :
7 人收藏

56 个回复

倒序浏览
Kuma  初学乍练 | 2014-9-4 14:32:16
本帖最后由 Kuma 于 2014-11-21 17:11 编辑

1L 站位,你的回复是我的动力!
咆哮的大猫  圆转纯熟 | 2014-9-4 14:35:08
本帖最后由 咆哮的大猫 于 2014-9-9 16:46 编辑

为啥演示只有PC能打开,而手机微信无法打开页面。。。奇怪。
firefly_hy  登堂入室 | 2014-9-16 16:28:39
顶,希望官方加上这些功能
loftcat  初学乍练 | 2014-11-3 21:58:29
非常棒的代码
ztxxxx  初学乍练 | 2014-11-14 10:23:49
Kuma 发表于 2014-9-4 14:32
[mw_shl_code=javascript,true]
    /**
     * 向指定帧添加脚本

还真不能在微信上打开哦,怎么回事?楼主你试过微信吗 ?
Kuma  初学乍练 | 2014-11-14 14:20:34
ztxxxx 发表于 2014-11-14 10:23
还真不能在微信上打开哦,怎么回事?楼主你试过微信吗 ?

微信上确实没显示,我也不知道怎么回事儿~
小米粒儿  初学乍练 | 2014-11-17 11:54:26
顶,希望官方加上这些功能
innocentjulie  圆转纯熟 | 2014-12-8 15:10:27
这个比官网的还有那个movieclipsharp效率高很多。。。(只测试过多个不同MC的表现),赞
Channing  圆转纯熟 | 2014-12-8 17:34:04
楼主威武  不过现在MC已经过时了~        用starlingSWF 习惯了。。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部