Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 movieClip不停止总是循环_Actionscript 3_Flash_Adobe_Flash Builder - Fatal编程技术网

Actionscript 3 movieClip不停止总是循环

Actionscript 3 movieClip不停止总是循环,actionscript-3,flash,adobe,flash-builder,Actionscript 3,Flash,Adobe,Flash Builder,我有一个类,它获取一个movieClip,然后使用addChild将其添加到显示中。问题是我根本不能玩或阻止它。基本上我不能和电影唇互动 代码如下: public function Avatar(movieClip:DisplayObject) //class constructor { ... avatarSprite = MovieClip(movieClip) addChild(avatarSprite); avatarSprite.gotoAndStop(1)

我有一个类,它获取一个movieClip,然后使用addChild将其添加到显示中。问题是我根本不能玩或阻止它。基本上我不能和电影唇互动

代码如下:

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在循环中播放,不会像我期望的那样停止。我不确定是什么问题。正如你所看到的,我没有做任何太复杂的事情。你知道我在这里遗漏了什么吗

提前谢谢


编辑:正如米盖尔桑提索指出的那样。问题在于movieClip中的嵌套动画,而不是实际代码本身。有人知道如何停止播放嵌套动画吗?

与其将其投射到电影剪辑,不如尝试将其作为电影剪辑处理

avatarSprite = movieClip as MovieClip;

(考虑到传入的movieclip实际上是一个movieclip当然…

检查movieclip中是否没有嵌套动画。暂停MovieClip不会停止内部动画。

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


时间线上没有play()函数吗?我认为这不重要,但我试着按照你的建议添加avatarSprite.play()。但没有任何改善。这就是你的意思,对吗?对不起,我是说;在《阿凡达》的电影剪辑里,时间轴上有代码吗?您应该转到Flash IDE并检查它。
avatarSprite.stop()
不工作吗?如果没有,则添加`停止();转到.fla的操作面板中的第一个帧(或另一个特定帧)(按F9打开面板)。可能需要查看更多代码。问题似乎与您发布的代码无关。如何实例化avatarSpriteClass?你是如何调用Avatar()函数的?你是对的…movieClip中有嵌套的动画。我制作了一个没有任何嵌套动画的虚拟movieClip,效果很好。您知道如何停止播放嵌套动画吗?因为我是从外部获得艺术,所以我很难改变它。我知道的唯一方法就是递归地遍历电影。如果你在谷歌上查一下,你可能会发现一些东西。这个方法的第一行有点小问题。应该是(使用停止)?parentClip.stop():parentClip.play();否则,无论useStop是否为false,parentClip将始终停止。但除此之外,它工作得完美无缺。谢谢你的帮助,也谢谢大家的提示=)
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);
        }
    }
}