0

これは実際には初歩的な質問ですが、ムービークリップの特定の状態を保存する方法はありますか? たとえば、big_mc というムービークリップを動的に追加すると、big_mc 内に child_mc1 と child_mc2 と呼ばれる 3 つの小さなムービーと、close_big が含まれます。ステージから big_mc を削除します。child_mc1 と child_mc2 のいずれかをクリックすると、どの child_mc をクリックする前に child_mc が消えます。

シナリオは、child_mc1 をクリックしてシーンから削除し、次に close_big ムービークリップをクリックして big_mc をステージから削除し、独自の状態を保存するというものです。次に SWF ファイルを実行して動的に追加します。 big_mc をステージングしても、child_mc1 は表示されず、child_mc2 は表示されます (SWF ファイルを閉じても、状態は保存されます)。助けてください..大歓迎です。

メインタイムラインのコード:

    var big_mc:mother_mc = new mother_mc;

    add_big_btn.addEventListener(MouseEvent.CLICK, call_big);

    function call_big(e:MouseEvent):void
    {
            addChild(big_mc);
    }

big_mc 内のコード:

    child_mc1.addEventListener(MouseEvent.CLICK, remove_child1);
    child_mc2.addEventListener(MouseEvent.CLICK, remove_child2);
    close_big.addEventListener(MouseEvent.CLICK, bye);


    function remove_child1(e:MouseEvent):void
    {
            removeChild(child_mc1);
    }

    function remove_child2(e:MouseEvent):void
    {
            removeChild(child_mc2);
    }

    function bye(e:MouseEvent):void
    {
            this.parent.removeChild(this);
    }
4

1 に答える 1

0

アドビが言うように、「ユーザーのコンピューターまたはサーバー上の限られた量のデータを読み取って保存するために使用される」SharedObjectから始めたいと考えています。MovieClip の「状態」を保存するのはもっと複雑です。

保存したいのは何ですか?×属性?もしかしてアルファ?すべての?各オブジェクトは、swf にデフォルトの状態で保存されます。Flash IDE のライブラリ アイテムは、インスタンス化の方法からも明らかなように、技術的にはミニチュア クラスです。と呼ばれるものを作成すると仮定するとcustomButton、次のように画面上に何千もの (または 1 つ) それらを生成できます。

var foo:customButton = new customButton();

手書きのクラスと同様に、customButtonコンパイル前に定義したすべてのプロパティを含む のコピーが作成されます。これらのプロパティを変更したい場合は、変更したいすべてのプロパティに対処する必要があります。

これを大まかに見て、swf をロードするたびにボタンの位置を保存したいと仮定しましょう。getLocal()で読み込み、flush()で保存します。

var settings:Object = SharedObject.getLocal("foo");

function updateState(e:Event):void {
    myButton.x = settings.x;
    myButton.y = settings.y;
} 

function saveState():void {
    settings.x = myButton.x;
    settings.y = myButton.y;
    settings.flush();
}

不可能ではありません。押しボタン式のソリューションはありません。必要に応じて、すべての DisplayObject を反復処理し、関連する各プロパティを SharedObject との間でロード/保存する関数を作成できます。やり過ぎかもしれませんが。

于 2013-10-28T21:16:48.640 に答える