FairyGUI笔记 :MovieClip(三)

编辑器支持创建、编辑和使用序列帧动画。创建序列帧动画的方式有:

  1. 使用Adobe Animate CC/Flash等动画编辑工具制作好动画,导出带plist或eas扩展名的描述文件以及相关的贴图(应放置在相同目录),然后将描述文件(仅描述文件,不是贴图)拖入编辑器即可生成动画素材。

  2. 点击菜单“资源”->”新建动画”,或者点击主工具栏按钮,可以创建一个新的空白动画。然后在动画编辑界面点击“导入图片序列”,导入多张图片。

  3. 直接拖入一个GIF文件到编辑器,GIF会自动转换为序列帧动画。

  4. Flash项目支持直接导入和使用SWF文件。

无论从何种方式创建的动画,在编辑器里,动画素材都是以一个单一文件存在(扩展名为jta)。也就是说,无论动画是从库里的图片文件创建的,还是从外面导进来的,都不会再有对单个图片的依赖。例如,如果你是从资源库里拖图片进入动画编辑器创建动画的,创建完成后,这些图片与动画再没有任何关系。如果你要设置动画所在的纹理集,在动画编辑器里对动画进行设置,对那些图片设置是无效的。

摆动式播放 默认的播放形式是从第一帧播放到最后一帧,然后下个循环又从第一帧播放到最后一帧。如果勾选了摆动式播放,则先从第一帧播放到最后一帧,再从最后一帧倒序播放回第一帧,依此循环。

  • GMovieClip

动画我们一般不直接使用new来创建,也很少有需要单独创建动画的需求。它一般直接放置在其他组件中作为组成元素。如果确实需要实例化一个动画,可以使用以下方法:

GMovieClip aMovie = UIPackage.CreateObject("包名","动画名").asMovieClip;

常用的API有:

aMovie.playing = false; //切换播放和停止状态
aMovie.frame = 5; //如果动画处于停止状态,可以设置停止在第几帧

对动画进行循环播放的设置,例如从第几帧播放到第几帧,循环播放多少次等:

aMovie.SetPlaySettings(0, -1, 0, -1);

对动画播放过程的控制,可以使用PlayState对象:

//返回播放头部
((MovieClip)aMovie.displayObject).playState.reset();

动画播放完成可以获得一个回调通知:(如果是循环播放,则所有循环结束后才算播放完成)

//Unity/Cry
aMovie.onPlayEnd.Add(...);
//AS3
aMovie.setPlaySettings(..., callback);
//Egret
aMovie.setPlaySettings(..., callback, this);
//Laya
aMovie.setPlaySettings(..., Handler.create(callback, this));
//Cocos2dx
aMovie->setPlaySettings(..., CC_CALLBACK_0(AClass::onPlayComplete, this));

 

var clips:Array = [tu1, tu2, tu3, tu4, tu5, tu6, tu7, tu8, tu9]; // 存储所有影视剪辑的数组 var STATE_NORMAL:Number = 1; var STATE_OVER:Number = 2; var STATE_SELECTED:Number = 3; for (var i:Number = 0; i < clips.length; i++) { var clip:MovieClip = clips[i]; clip.gotoAndStop(STATE_NORMAL); clip.selected = false; // 添加一个selected属性并初始化为false clip.useHandCursor = true; clip.addEventListener(MouseEvent.ROLL_OVER, onRollOver); clip.addEventListener(MouseEvent.ROLL_OUT, onRollOut); clip.addEventListener(MouseEvent.CLICK, onClick); } function onRollOver(event:MouseEvent):void { trace("onRollOver called"); updateState(event.currentTarget as MovieClip, STATE_OVER); } function onRollOut(event:MouseEvent):void { trace("onRollOut called"); var clip:MovieClip = event.currentTarget as MovieClip; if (!clip.selected) { updateState(clip, STATE_NORMAL); } } function onClick(event:MouseEvent):void { trace("onClick called"); var clip:MovieClip = event.currentTarget as MovieClip; if (clip.selected) { return; } for (var j:Number = 0; j < clips.length; j++) { var c:MovieClip = clips[j]; c.selected = false; updateState(c, STATE_NORMAL); } clip.selected = true; updateState(clip, STATE_SELECTED); } function updateState(clip:MovieClip, state:Number):void { clip.gotoAndStop(state); if (state == STATE_SELECTED) { clip.mc_normal.visible = false; clip.mc_over.visible = false; clip.mc_selected.visible = true; } else if (state == STATE_OVER) { clip.mc_normal.visible = false; clip.mc_over.visible = true; clip.mc_selected.visible = false; } else { // STATE_NORMAL clip.mc_normal.visible = true; clip.mc_over.visible = false; clip.mc_selected.visible = false; } }改为as2语言
05-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值