1

我有一个获取movieClip 的类,然后使用addChild 将其添加到显示中。问题是我根本无法播放或停止它。基本上我无法与movieClip 交互。

这是代码:

public function Avatar(movieClip:DisplayObject) //class constructor
{   ...
    avatarSprite = MovieClip(movieClip)
    addChild(avatarSprite);
    avatarSprite.gotoAndStop(1); //this is not working
    trace(avatarSprite.currentFrame) //always returns 1
    trace(avatarSprite.isPlaying) // returns false
    ...
    }

当我运行代码时,movieClip 会循环播放,并且不会像我预期的那样停止。我不确定有什么问题。如您所见,我没有做任何太复杂的事情。知道我在这里缺少什么吗?

提前致谢

编辑:正如 miguelSantirso 指出的那样。问题在于movieClip 中的嵌套动画,而不是实际代码本身。有谁知道如何阻止嵌套动画播放?

4

3 回答 3

2

此函数将停止所有嵌套的movieClips(如果将false传递给useStop参数,则播放它们)

function recursiveStop(parentClip:DisplayObjectContainer, useStop:Boolean = true, gotoFrame:Object = null):void {
    var tmpClip:MovieClip = parentClip as MovieClip;
    if (tmpClip) {
        if (useStop) {
            (gotoFrame != null) ? tmpClip.gotoAndStop(gotoFrame) : tmpClip.stop();
        }else {
            (gotoFrame != null) ? tmpClip.gotoAndPlay(gotoFrame) : tmpClip.play();
        }
    }

    var i:int = parentClip.numChildren;
    while(i--){
        if(parentClip.getChildAt(i) is DisplayObjectContainer){
            recursiveStop(parentClip.getChildAt(i) as DisplayObjectContainer, useStop, gotoFrame);
        }
    }
}
于 2012-06-14T22:58:45.940 回答
1

检查您的影片剪辑中是否没有嵌套动画。暂停影片剪辑不会停止内部动画。

于 2012-06-14T15:00:22.733 回答
-1

与其将其转换为影片剪辑,不如尝试将其作为影片剪辑处理。

avatarSprite = movieClip as MovieClip;

(考虑到传入的movieclip 实际上是一个movieclip ofcourse...)

于 2012-06-14T14:34:29.270 回答