0

私は自分のライブラリからムービークリップ「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 ();
        }

ムービークリップには「aan」と「uit」の 2 つのフレームが含まれており、フレーム「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 のこの部分はまだよくわかりません。

4

2 に答える 2

0

答えは、 this["bg"] または getChildByName("bg") のようにクリップにアクセスしようとすると、DisplayObjectを参照しているということです。これには、この場合に必要なgotoAndStopのようなMovieClipのすべてのメソッドが含まれているわけではありません。

新しい変数を宣言しました:

var movie:MovieClip;

次に、DisplayObject を MovieClip としてキャストし、var movieに入れます。

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 ();
        }

gotoAndStop のような MovieClip 固有のメソッドを使用できるようになりました。

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

この回答に触発された回答

于 2012-12-11T13:15:39.760 に答える
-1
bg.name = "bg";

実際、このコードは正しく機能しないことがよくあります。したがって、名前を設定する代わりに、「achtergrond」オブジェクトの実際のインスタンス名を取得する必要があり、このインスタンス名を使用する必要はありません。

別の解決策:

achtergrond は単一のオブジェクトだと思うのに、なぜ "getChildByName" で使用するのですか? のように使いますbg.gotoAndStop();

于 2012-12-11T13:15:39.560 に答える