确定是现在正在播放的MovieClip

时间:2011-04-17 12:07:46

标签: actionscript-3 flash

我有movieClip(在as3中),我想知道这个movieClip现在正在播放

我该怎么做?

2 个答案:

答案 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)