Flash AS3教程:Motion类

2019-10-08 16:55:53王旭


playing属性(只读):
public function get playing():Boolean
是否正在播放

attribute属性:
public var attribute:String;
设置操作的对象属性,没必要的情况下最好不要修改

begin属性:
public var begin:Number;
设置操作的对象初始属性,没必要的情况下最好不要修改

end属性:
public var end:Number;
设置操作的对象结束属性,没必要的情况下最好不要修改

duration属性:
public var duration:uint;
设置对象从初始值,经过多少帧,才运动到结束值

algorithm属性:
public var algorithm:Function;
设置对象从初始值到结束值是以什么算法进行运动

受保护的属性:
protected var _current:uint = 0;
protected function updata(isInit:Boolean = false):void
如果继承该类,则可以访问_current属性和updata方法,可以直接修改当前帧和强制更新屏幕

举例:(上面那个展示flash的源代码)
对于各种不同的算法,进行效果展示,小小的偷了一下懒,使用的flash自带组件。。

CODE:
import fl.transitions.easing.*;
import index.base.animation.Motion;
import index.base.events.MotionEvent;

//算法数组
var classAr:Array = [Back,Bounce,Elastic,None,Regular,Strong];

//初始小方块
var mc:MC = new MC;
mc.y = 150;
addChild(mc);

//动画声明
var motion:Motion = new Motion(mc,"x",Back.easeIn,50,350,40);
motion.addEventListener(MotionEvent.MOTION_UPDATA,motionUpdataFun);
motion.addEventListener(MotionEvent.MOTION_STOP,motionStopFun);
motion.addEventListener(MotionEvent.MOTION_PLAY,motionPlayFun);
motion.addEventListener(MotionEvent.MOTION_FINISH,motionFinishFun);
motion.play();

//动画播放完毕
function motionFinishFun(e:MotionEvent){
traceText.appendText("播放完毕n");
motion.isBack ? motion.play() : motion.back();
traceText.scrollV = traceText.maxScrollV;
}

//屏幕更新
function motionUpdataFun(e:MotionEvent){
currentText.text = motion.current.toString();
traceText.appendText("屏幕更新,当前帧 " motion.current ",X属性:" mc.x "n");
traceText.scrollV = traceText.maxScrollV;
}

//动画播放
function motionPlayFun(e:MotionEvent){
traceText.appendText("开始播放n");
traceText.scrollV = traceText.maxScrollV;
}

//动画停止