我有movieClip(在as3中),我想知道这个movieClip现在正在播放
我该怎么做?
答案 0 :(得分:9)
虽然很疯狂,但没有内置的方法可以做到这一点(尽管应该如此)。两个选项都有一个在调用play / stop时交换的标志。
var mc_playing:Boolean = false;
mc_playing = true;
mc.play();
mc_playing = false;
mc.stop();
或者您可以扩展MovieClip类以创建自己的播放属性。
class SuperMovieClip extends MovieClip {
private var _playing:Boolean = false;
public function SuperMovieClip() {
}
override public function play():void {
_playing = true;
super.play();
}
override public function stop():void {
_playing = false;
super.stop();
}
public get function playing():Boolean {
return _playing;
}
}
然后只需将你的mc链接到SuperMovieClip而不是MovieClip
答案 1 :(得分:0)
如果您不想覆盖Core类,可以创建一个Controller类来处理对时间更新的这类检查。 Controller保存剪辑以检查并存储更新的currentFrame。使用此方法,您可以使用一个控制器来控制许多剪辑,并且只询问控制器是否正在播放剪辑。稍后可以轻松地向控制器添加功能,而无需更改要检查的类。
_controller = new TimelineClipController();
_controller.add(_animationClip1);
_controller.add(_animationClip2);
// on update (ENTER_FRAME, CUSTOM EVENT or TIMER)
_controller.update();
// check if playing
trace(_controller.isClipPlaying(_animationClip1));
另一种方法是添加脚本运行时。我个人不喜欢这个,但在某些情况下它可能很好。假设您添加
//add script to star timeline on frame 2
_animationClip1.addFrameScript(1, frameFunction); // (zero based)