Dan*_*cer 9 flash actionscript-3 flash-cs5
有人建议在动画片段动画结束时触发功能的最佳方法吗?我认为eventlistener可以处理这个问题,但不确定最好的方法.谢谢保罗
Mar*_*rty 10
有几种方法可以解决这个问题:
在参考第3点时,我将为您的对象创建一个基类.这样,您可以将相同的逻辑应用于动画的多个元素.
像这样的东西:
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class AnimatingObject extends MovieClip
{
// constants
public const ANIMATION_COMPLETE:String = "animation_complete";
/**
* Constructor
*/
public function AnimatingObject()
{
addEventListener(Event.ENTER_FRAME, _handle);
}
/**
* Called on dispatch of Event.ENTER_FRAME
*/
private function _handle(e:Event):void
{
if(currentFrame == totalFrames)
{
var evt:Event = new Event(ANIMATION_COMPLETE);
dispatchEvent(evt);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我们可以听"animation_complete"并相应地做一些事情.
package
{
import flash.events.Event;
public class MyAnimatingObject extends AnimatingObject
{
/**
* Constructor
*/
public function MyAnimatingObject()
{
addEventListener(ANIMATION_COMPLETE, _lastFrame);
}
/**
* Called on dispatch of AnimatingObject.ANIMATION_COMPLETE
*/
private function _lastFrame(e:Event):void
{
trace("i'm done");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不相信在影片剪辑的末尾有一个事件广播,您始终可以在动画的最后一帧上运行脚本来执行您想要的操作。如果您确实想使用事件,则影片剪辑的最后一帧可以执行一个脚本,该脚本利用dispatchEvent() 发送一个可以拾取的自定义事件。
从您的帖子中我不确定您以前是否使用过事件处理程序,所以这里有一个关于该事件处理程序的教程(我不擅长解释,抱歉!):http: //edutechwiki.unige.ch/en/ActionScript_3_event_handling_tutorial
对于dispatchEvent(): http://www.actionscript.org/resources/articles/204/1/Using-EventDispatcher/Page1.html
| 归档时间: |
|
| 查看次数: |
23998 次 |
| 最近记录: |