AS3 缓动加速动画
来源:互联网 发布:赛亚人网络 编辑:程序博客网 时间:2024/05/17 22:17
我们平时写的easing缓动系数,实现都是:缓动减速运动。
那么,要实现缓动加速动动,有位Q群朋友提出这个问题,一个星期前,还想着帮忙写出来。但当时发现写不出来。
一个星期后,突然在群里又看到这个问题的出现,突然灵感一来,写出了效果,但需要两个辅助变量:
package{import flash.display.Sprite;import flash.display.StageAlign;import flash.display.StageScaleMode;import flash.events.Event;import flash.events.KeyboardEvent;/** * [description] * @author Jave.Lin * @date 2013-11-14 **/[SWF(width="1000", height="600")]public class TestMotion extends Sprite{private var ball:Ball;private var targetX:Number = 600; // 目标位置private var easing:Number = .07; // 均减、加的缓存系数private var startDistance:Number; // start distance 记录下,刚开始距离值 private var curAddDistance:Number; // 记录当前已累加过的距离值public function TestMotion(){super();stage.frameRate = 60;stage.color = 0x88888888;stage.align = StageAlign.TOP_LEFT;stage.scaleMode = StageScaleMode.NO_SCALE;ball = new Ball();addChild(ball);addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);}private function onAddedToStage(e:Event):void{stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);}private function onKeyDown(e:KeyboardEvent):void{ball.x = 100;ball.y = 100;startDistance = targetX - ball.x;curAddDistance = 0;stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);}private function onEnterFrame(e:Event):void{var t:Number;var dx:Number = targetX - ball.x;var addX:Number;// 1、缓动减速//addX = easing * dx;//addX = addX > 0 ? (addX < .25 ? .25 : addX) : (addX > -.25 ? -.25 : addX); // flash as3 最小位移单位//ball.x += addX;//if(Math.abs(dx) <= .25) // flash as3 最小位移单位//{//ball.x = targetX;//stage.removeEventListener(Event.ENTER_FRAME, onEnterFrame);//trace("onCom");//}// 2、均加addX = easing * dx;var dx1:Number = startDistance - (targetX - (ball.x + addX)); // 反向预计值距离,假设:总距离为:100,我动了,10,那么剩90,而我这个求的正这个是dx1 = 90addX = easing * dx1;addX = addX > 0 ? (addX < .25 ? .25 : addX) : (addX > -.25 ? -.25 : addX); // flash as3 最小位移单位curAddDistance += addX;ball.x += addX;trace("addX : " + addX);trace("Math.abs(dx) : " + Math.abs(dx));if(curAddDistance >= startDistance) // flash as3 最小位移单位{ball.x = targetX;stage.removeEventListener(Event.ENTER_FRAME, onEnterFrame);trace("onCom");}}}}import flash.display.Sprite;class Ball extends Sprite{public function Ball(){graphics.clear();graphics.beginFill(0xff0000, .5);graphics.drawCircle(0, 0, 15);graphics.endFill();}}
该代码可直接运行。
- AS3 缓动加速动画
- 学习缓动动画
- 缓动动画 animate
- 缓动动画
- 缓动动画原理
- DoTween -- 缓动动画
- 缓动动画
- AS3 控制按钮的缓动缩放
- wp8缓动函数动画
- 缓动动画的实现
- 封装缓动动画函数
- making things move as3 ---缓动和弹性公式
- 缓动函数与关键帧动画
- jquery动画animate缓动效果
- JS封装缓动动画函数
- js 匀速/缓动动画 简单封装
- js缓动动画函数封装
- 缓动动画原理--封装基本函数
- POJ 1112 Team Them Up!
- 页面请求中没有referrer信息的几种情况
- 关于cocostudio中demogame样例中ccmenu的位置的疑问分析
- Qt 如何把版本信息加入应用程序
- java反射(1) 之class.forName(""), 类名.class, 对象.getClass()区别
- AS3 缓动加速动画
- HTTP_REFERER
- 理解MySQL——索引与优化
- Android 开机启动服务
- iOS设备列表
- iis5.1 出现登录框最新办法
- IT职业发展路线图
- 编程练习(1)
- 求A/B高精度值