1

ここ数年、いつも大変お世話になりました。プログラミングの問題の解決策をいつでも見つけることができました。しかし、今回はこれに対する解決策を見つけることができませんでした。ローダーについて説明するトピックがいくつかありますが。私のはかなり違います。

問題: 最初のゲーム画面で、ムービー (.swf に変換されたムービー) を読み込みます。そして、次の状態に切り替えると、アンロードされて表示されなくなります。ゲームの最後に、独自に作成したリセット関数 (ローダーとはあまり関係がなく、いくつかの静的変数をリセットするだけです) を実行すると、ゲームは最初の状態に切り替わります。

ローダーが再び表示されます。しかし、状態を切り替えると、ローダーがまだ表示されています。

注: flixel ライブラリを使用しています。この場合、それが大きな違いを生むとは思いませんが(私はまだ問題を抱えているので、おそらくそうすると思います:P)。

重要なコードのみを配置しました。私は3つのボタンを持っています。私が押すとしましょう。3番目のボタン。switch ケースでは case 2 に入ります。

リセット関数は flixel 関数: FlxG.resetGame() ですが、実際には問題ではないと思います。

これが誰かが問題/解決策を見るのに十分な情報であることを願っています. 前もって感謝します。

コードは次のとおりです。

AMCInlog.as

private var my_loader:Loader;
private var my_player:Object;
    public function AMCInlog() 
    {
        imgBackground = new FlxSprite(0, 0, Resources.imgStartMenuBackground);
        add(imgBackground);

        my_loader = new Loader();
        my_loader.x = 40;
        my_loader.y = 156;          
        my_loader.scaleX = 1.2;
        my_loader.scaleY = 1.2;
        //loadUserData();
        moviePlayerSequence();
        //userData.clear();
        //createButtons();  
    }

    private function moviePlayerSequence():void {
        var request:URLRequest = new URLRequest("DGAME Movie.swf");
        my_loader.load(request);
        FlxG.stage.addChild(my_loader);
    }

    private function currentButtonFunction():void {
        switch(currentButton) {
            case 0:
                my_loader.unloadAndStop();
                FlxG.stage.removeChild(my_loader);
                FlxG.switchState(new AMCRegister());
                break;
            case 1:
                my_loader.unloadAndStop();
                FlxG.stage.removeChild(my_loader);
                FlxG.switchState(new AMCExistingAccountLogin());
                break;
            case 2:
                my_loader.unloadAndStop();
                FlxG.stage.removeChild(my_loader);
                FlxG.switchState(new AMCPreferences());
                break;
            default:
                break;
        }
    }   
4

1 に答える 1

0

ローダーをリセットすることはないため、前回ロードしたものを保持するだけです。単にローダーをリセットしてリセットする(または実際に再起動する)だけです(最良の方法ではありません(これまでにないフラッシュガベージコレクションに入ります)それは素晴らしいです)しかしねえ、それは動作します)

my_loader = new Loader();

または(私には見えないので)単純に unload(); を使用してみてください。unloadAndStop() の代わりに; (まあ、止める必要はないので、ちゃんとアンロードすれば、とにかく消えます)

幸運を!

于 2012-11-13T10:43:00.137 に答える