0

ここに問題があります...私はフレックスアプリケーション(actionscript)に取り組んでいます...

アプリケーションに、特定の位置に 2 つのボタンと 3 つのキャンバス コンポーネントを含むパネルがあります...今、パネルの現在の状態をファイルまたはデータベースに保存したいと考えています...その後、同じパネルを再度ロードしたいと考えています。戻ってアプリケーションを実行すると、私のアプリケーション...

そのため、readObject() および writeObject() メソッドを使用してパネル全体を ByteArray オブジェクトに変換しようとしましたが、ByteArray を読み取り、addChild() メソッドを使用してアプリケーションにパネルを追加すると、何も追加されず、エラーや障害はありません...

writeObject は、印刷できる ByteArray を作成しますが、それを取得して子を追加すると、パネルを取得できず、子です...

誰かが助けてくれれば...それはありがたいです...事前に感謝します...

これがサンプルコードです...私がやりたいことを説明しています...

<mx:Script>
    <![CDATA[
        import mx.controls.Alert;
        import mx.rpc.events.ResultEvent;
        import mx.collections.ArrayCollection;

    [Bindable] private var photoFeed:ArrayCollection;

    var buffer:ByteArray;

    private function init():void{

        addEventListener(KeyboardEvent.KEY_DOWN, keyHandler);
        searchTerms.setFocus();
        buffer = new ByteArray();
    }

    private function keyHandler(event:KeyboardEvent):void{
        if(event.charCode == 13){

                    myButton.label = "Exit";

            try{
                buffer.writeObject(myData);

            }catch(error:Error){
                Alert.show(error.toString(),"Encoding Error");
            }

            removeChild(myData);
            reloadButton.visible = true;
            Alert.show("HBox is deleted","Alert");
        }
    }

    private function reloadHBox():void{

        Alert.show("Trying to load Hbox","Alert"); 
        try{
            buffer.position = 0;
            var obj:HBox = buffer.readObject() as HBox;

        }catch(error:Error){
            Alert.show(error.toString(),"Decoding Error");
        }

        addChild(obj);

        Alert.show("Hbox is reloaded","Alert"); 
    }

    ]]>
</mx:Script>

<mx:Button id="reloadButton" label="Reload HBox" visible="false" click="reloadHBox()"/>

<mx:HBox width="100%" id="myData">
    <mx:Label text="Hi Rashmin here..."/>
    <mx:TextInput id="searchTerms" name="searchTerms" text="Hello How are you?"/>
    <mx:Button id="myButton" label="Enter"/>
</mx:HBox>

HBox を再生成したいので、助けが必要です...

4

2 に答える 2

1

独創的なアイデアですが、うまくいかなくても不思議ではありません。コードを共有できますか?

そうは言っても、状態(x、y座標/高さ幅など)を保存するアルゴリズムを作成し、ロード時にその情報をリセットするだけです。

于 2010-08-14T02:59:12.103 に答える
0

パネルの位置を保存するオブジェクトを作成できます

 private var positions:Object;
 positions = { panel1Position: new Point( panel1X , panel1Y)
                          //etc.... };

最初にいくつかのデフォルト値を設定すると、コンポーネントは位置オブジェクトから位置を取得します。

  private function init():void
  {
     panel1.x = positions.panel1Position.x;
     //etc...
  }

値を保存するには、SharedObject を使用します

 var objectName:String = "Put some identifier here";
 var sharedObject:SharedObject = SharedObject.getLocal( objectName , '/' );
 sharedObject.data.positions = positions;

値を取得するには、必要なのは

 var sharedObject = SharedObject.getLocal( "the identifier you've set above" , '/' );
 positions = sharedObject.data.positions;

その後、コンポーネントの x と y の値を更新できます。とにかく、これは一般的な考え方です。詳細については、SharedObject クラスを確認してください。

http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/

パネルの状態にも同じ原則を適用できます。たとえば、各状態を整数で識別できる場合は、状態の整数を sharedObject に保存します。

于 2010-08-14T06:17:22.247 に答える