• 微课视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
微课江湖
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 微课视频
  • photoshop
  • Fireworks
  • CorelDraw
  • Illustrator
  • Painter
  • Freehand
  • Indesign
  • flash
  • maya
  • autocad
  • 3dmax
您的位置:首页 > 平面设计 >flash > Flash AS3教程:Motion类

Flash AS3教程:Motion类

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-05-24

佚名 向大家分享了Flash AS3教程:Motion类,其中包含flash as3教程,flash as3视频教程,flash as3 api,flash as3帮助,flash游戏修改器as3等知识点,遇到此问题的同学们可以参考下
前面教程学习了Flash AS3教程:Random类,这篇我们一起来学习Motion类的使用方法和实例。
先来一个例子展示:
http://www..net/files/media/Motion.swf

这个类貌似是多余的,反正就是Tween类,但是解决了动画可能播到一半就停止了等问题,Tween播放到一半就停止了原因是因为类中的侦听EnterFrame事件的时候,使用的是弱引用侦听方式,在播放的途中,被内存自动回收了,因此播放到一半就夭折了,解决办法嘛,除了自己写一个,也可以去包中改一下Tween,把侦听改成强引用就行了
我个人是不太习惯使用Tween的,因此我就写了这个类,自己使用嘛,大家觉得还不错就拿去用吧
缓动的算法还是使用ADOBE自带的那个easing包
这个类属性和方法比较多。。耐心看吧,跟Tween差不了太多的

类讲解:
index.base.animation.Motion类:
代码:public class Motion extends EventDispatcher
提供给程序员使用的动画类

构造函数:
public function Motion(target_:*,_attribute:String,_algorithm:Function,_begin:Number,_end:Number,_duration:uint = 10)
与Tween一模一样,只不过最后少了个属性是是否以时间计算缓动,而该类只有以帧频计算缓动

play方法:
public function play():void
开始播放,并触发播放事件
如果正在播放,调用该方法不会有什么变化,只不过会触发播放事件

back方法:
public function back():void
同于play方法,不同的是该方法是让动画反过来播放

resume方法:
public function resume():void
继续播放,依然会触发播放事件

stop方法:
public function stop():void
停止播放,触发停止事件
如果是播放完毕了,即还会触发播放完毕事件
停止事件永远比播放完毕事件提前调度

reset方法:
public function reset():void
重置动画,还原到刚开始实例化的状态
无论是否正在播放,都会触发停止事件

forward方法:
public function forward():void
快进到最后

rewind方法:
public function rewind():void
倒带到最前

next方法:
public function next():void
向前播放一帧
如果是在播放中使用该方法,效果不是太明显

prev方法:
public function prev():void
向前播放一帧
如果是在播放中使用该方法,效果不是太明显

clear方法:
public function clear():void
清除类中的引用,事件等

isBack属性(只读):
public function get isBack():Boolean
是否在回放状态

target属性(只读):
public function get target():*
获取当前操作的对象

current属性(只读):
public function get current():uint
获取当前播放的位置

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;
}

//动画停止
function motionStopFun(e:MotionEvent){
traceText.appendText("停止播放\n");
traceText.scrollV = traceText.maxScrollV;
}

//侦听各个面板的change事件
classList.addEventListener("change",changeFun);
funcList.addEventListener("change",changeFun);
durationBar.addEventListener("change",changeFun);
playButton.addEventListener("click",clickFun);

//当属性面板发生数值改变,即触发
function changeFun(e:Event){
motion.rewind();
motion.algorithm = classAr[classList.selectedItem.data][funcList.selectedItem.data];
motion.duration = durationBar.value;

durationText.text = durationBar.value.toString();
}

//播放按钮
function clickFun(e:Event){
if(playButton.selected) motion.resume();
else motion.stop();
}

//4个倒带前进等按钮事件
prevButton.addEventListener(MouseEvent.CLICK,function(){motion.prev()});
nextButton.addEventListener(MouseEvent.CLICK,function(){motion.next()});
forwardButton.addEventListener(MouseEvent.CLICK,function(){motion.forward()});
rewindButton.addEventListener(MouseEvent.CLICK,function(){motion.rewind()});

2 下一页 阅读全文</div> </div>

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • flash文本竖排效果实现as3代码
  • Flash AS3 连锁反应的粒子动画
  • Flash AS3 制作文字飞出动画
  • Flash AS3 快速制作烟雾动画
  • Flash AS3代码实现鼠标跟随喷枪涂鸦效果
  • Flash AS3的parameters对象处理网页参数
  • FLASH AS3与网页JS参数值传递的问题
  • 从基础开始深入学Flash AS3教程(6)(译文)
  • Flash as3教程:OutDisplay类
  • 从基础开始深入学Flash AS3教程(7)(译文)

相关文章

  • 2017-05-24Flash游戏开发教程:第五节
  • 2017-05-24Flash8实例教程:绘制中国风荷塘风景
  • 2017-05-24用flash制作一个简单的标志
  • 2017-05-24Flash as常用后缀及意义
  • 2017-05-24Flash AS 入门教程 圆和椭圆函数的应用
  • 2017-05-24用FLASH模拟水满则溢的动画
  • 2017-05-24Flash Web设计团队协作
  • 2017-05-24flash图层混合模式制作图片切换特效动画的教程
  • 2017-05-24AS2.0面向对象编程的解释
  • 2017-05-24Flash动画制作实例:制作扇子自动打开的动画效果

文章分类

  • photoshop
  • Fireworks
  • CorelDraw
  • Illustrator
  • Painter
  • Freehand
  • Indesign
  • flash
  • maya
  • autocad
  • 3dmax

最近更新的内容

    • Flash AS3简单制作图片变成百叶窗特效教程
    • Flash新手鼠绘教程(2):熟悉鼠绘工具
    • Flash AS3基础教程:如何用Flash AS3侦测鼠标的当前方位
    • Flash 视频广告的定位兼容性问题
    • flash制作同步特效动画技巧图解
    • 用flash绘制扶梯的运动
    • Flash新手鼠绘教程(1):怎样学习鼠绘
    • FLASH 3D相册之利用BitmapData类制作
    • Flash Pro CC 2015创建遮罩层动画的实例教程
    • Flash制作关于光的折射和全反射规律的动画教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2015-2018 All Rights Reserved. 微课江湖 版权所有