AS3 找不到在 as3 中转到和停止影片剪辑实例的正确方法



我从我的图书馆里有一个电影剪辑"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和其他东西,我不知道为什么我不能处理我的电影剪辑。实际上,我有一个线索,但仅此而已。我还不太了解Flash的这一部分。

答案是,如果我尝试像这样访问我的剪辑: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);
    }

受此答案启发的答案

bg.name = "bg";

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

另一种解决方案:

我认为achtergrond是单个对象,那么为什么你把它与"getChildByName"一起使用?像bg.gotoAndStop();一样使用它.

最新更新