我有一个获取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中的嵌套动画,而不是实际的代码本身。有谁知道如何阻止嵌套动画播放?
答案 0 :(得分:2)
此函数将停止所有嵌套的movieClip(如果将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);
}
}
}
答案 1 :(得分:1)
检查动画片段中是否存在嵌套动画。暂停MovieClip不会停止内部动画。
答案 2 :(得分:-1)
不要将其投射到动画片段,而是尝试将其作为动画片段处理。
avatarSprite = movieClip as MovieClip;
(考虑到传入的movieclip实际上是一个影片剪辑......)