AS3找不到正确的方法来在as3中gotoAndStop一个movieclip实例

时间:2012-12-11 11:52:31

标签: actionscript-3 flash flash-cs5 movieclip displayobject

我的库中有一个movieclip“achtergrond”,我把它放在舞台上,有这样的功能:

function set_game ()
        {
            oefNr = 4;
            var bg:achtergrond = new achtergrond();
            bg.x = 0;
            bg.y = 0;
            bg.name = "bg";
            bg.gotoAndStop ("uit");
            addChild (bg);
            set_next ();
        }

动画片段包含2帧“aan”和“uit”,它从帧“uit”开始。 在我的游戏中,我想在播放声音的同时将帧设置为“aan”,如下所示:

    function playSnd ():void
    {
        getChildByName("bg").gotoAndStop("aan");
        snd = new Sound(new URLRequest("phonetic_" + curArr[curSnd] + ".mp3"));
        cnl = snd.play();
        cnl.addEventListener (Event.SOUND_COMPLETE, completeSnd);
    }

但是对于我的生活,我找不到正确的方法来做到这一点。 Flash继续关于displayObjects和其他东西,我不知道为什么我不能解决我的movieclip。实际上,我有一个线索,但仅此而已。我还不太了解Flash的这一部分。

2 个答案:

答案 0 :(得分:0)

答案是,如果我尝试像这样访问我的剪辑:this [“bg”]或getChildByName(“bg”)我指的是 DisplayObject 。 这没有 MovieClip 的所有方法,就像我在这种情况下需要的 gotoAndStop 一样。

我宣布了一个新变量:

var movie:MovieClip;

然后我将DisplayObject作为MovieClip投射并将其放入var 电影

function set_game ()
        {
            oefNr = 4;
            var bg:achtergrond = new achtergrond();
            bg.x = 0;
            bg.y = 0;
            bg.name = "bg";
            bg.gotoAndStop ("uit");
            addChild (bg);
            movie = this.getChildByName("bg") as MovieClip;
            set_next ();
        }

现在我可以使用特定于MovieClip的方法,例如gotoAndStop:

function playSnd ():void
    {
        movie.gotoAndStop("aan");
        snd = new Sound(new URLRequest("phonetic_" + curArr[curSnd] + ".mp3"));
        cnl = snd.play();
        cnl.addEventListener (Event.SOUND_COMPLETE, completeSnd);
    }

this answer

启发的答案

答案 1 :(得分:-1)

bg.name = "bg";

实际上很多次这段代码都无法正常工作。因此,您应该获得" achtergrond"的真实实例名称,而不是设置名称。对象,而不是必须使用此实例名称。

另一种解决方案:

我认为achtergrond是单个对象,所以为什么要用它来" getChildByName"?像bg.gotoAndStop();一样使用它。