【问题标题】:Easing and timer event AS3缓动和定时器事件 AS3
【发布时间】:2010-02-08 16:46:09
【问题描述】:

我的仪表看起来很棒,指针会循环旋转。如何为其添加缓动?

仪表是根据计时器事件构建的。我希望针在最后反弹。我需要控制它何时发生,而不是仅仅添加一个变量,以便我可以通过动画对其进行调整。

alt text http://www.ashcraftband.com/myspace/videodnd/icon8.jpg

工作代码“感谢会员”

var timer:Timer = new Timer(20, 30);//tick 200, 36<br>

timer.addEventListener(TimerEvent.TIMER, onTimer); 
timer.addEventListener(TimerEvent.TIMER_COMPLETE, startAgain); 

timer.start(); 

function startAgain($evt:TimerEvent):void { 
    timer.reset(); 
    timer.start(); 
} 

function onTimer($evt:TimerEvent):void { 
    watch.hand.rotation = 30 + timer.currentCount;//tick 5 
} 

失败的尝试“针疯了,它只是想弹跳”

//the "tick" may mess up the effect

import fl.transitions.Tween;
import fl.transitions.easing.*;
var timer:Timer = new Timer(20, 30);//tick 200, 36
  var startValue:Number = watch.hand.rotation;
  var finishValue:Number = 33;//400
  var duration:Number = 222;//3
  var myTween:Tween = new Tween(watch.hand, "rotation", Elastic.easeOut, startValue, finishValue, duration, false);//true
  myTween.looping = true;
timer.addEventListener(TimerEvent.TIMER, onTimer); 
timer.addEventListener(TimerEvent.TIMER_COMPLETE, startAgain); 

timer.start(); 

function startAgain($evt:TimerEvent):void { 
    timer.reset(); 
    timer.start(); 
} 
function onTimer($evt:TimerEvent):void { 
    watch.hand.rotation = 30 + timer.currentCount;//tick 5
 //watch.x =+ 66;

} 

实验
我的项目需要对定时器事件和补间有更高的理解。如果我能让这个动画做一些事情,我想我可以更好地理解如何传递函数调用和设置事件。

【问题讨论】:

    标签: flash actionscript-3


    【解决方案1】:

    正如@pfunc 提到的,使用第三方补间库将更容易实现。可以使用 fl.transitions.Tween 来完成,但是 tweens 的链接和 onComplete 处理不太理想。

    如前所述,请查看以下其中一项:

    GTween

    TweenLite

    Tweener

    所有这 3 个都有一个非常相似的 API(这比 Flash 的内置 Tween - 恕我直言要好得多)

    当我帮助您解决有关 Timer 类的原始问题时,我没有意识到这是您想要做的。 Timer 类不是解决此问题的合适选择,因为它旨在以一致的方式处理事件。

    【讨论】:

    • 是的,我不能推荐人们不要使用 fl.transitions 包。我们甚至不允许在我们的项目中使用它。
    • @VideoDnd,我实际上会给@pfunc打勾。毕竟,大约 12 分钟前,他的答案和我一样。
    • 我可能会回到 tweenlite。我的项目都涉及帧动画无法处理的循环、补间和重复运动。谢谢。
    【解决方案2】:

    我会为此使用另一个补间引擎。查看 tween 或 gtween。使动画更容易,您可以在补间完成动画时调用函数。您可以创建自定义补间并调整所需的反弹量。使用 flash 的内置补间引擎可能有办法做到这一点,但不确定如何。

    【讨论】:

      猜你喜欢
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      相关资源
      最近更新 更多