2013-10-28 41 views
0

這實際上是一個noobish的問題,但是有沒有一種可能的方式來保存movieclip的某個狀態?例如我動態地添加了一個名爲big_mc的movieclip,然後在big_mc裏面包含三個(3)較小的電影叫做child_mc1和child_mc2,close_big可以將舞臺上的big_mc刪除,當我點擊child_mc1和child_mc2時,child_mc會在我點擊哪個child_mc之前消失。保存包含多個movieclip的movieclip的狀態

所以這個場景是當我點擊從場景中刪除自己的child_mc1,然後我會點擊close_big movieclip從舞臺上刪除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); 
    } 
+0

保存swf的狀態是一項相當沉重的任務。您最好找到關於該主題的特定教程或文章。 – Glitcher

回答

0

你要開始SharedObject,其中如Adobe所說的那樣,「用於讀取和存儲有限用戶計算機或服務器上的數據量「。保存MovieClip的「狀態」更加複雜。

那你想保存些什麼? x屬性?也許阿爾法?一切?每個對象都以swf的默認狀態存儲。 Flash IDE中的庫項目在技術上是微型類,正如我們實例化它們的方式所證明的那樣。假設你創造的東西叫做customButton,你可以在屏幕上(或一個)這樣來使用它們十萬:

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的函數,並將每個relavent屬性加載/保存到SharedObject中。雖然可能會矯枉過正。

+0

我去做一些關於「sharedObjects」的小研究,並且非常感謝你,但是我仍然對如何保存big_mc的狀態沒有任何想法,我還是有點困惑big_mc的屬性用於保存在共享對象中.. –

+0

沒有國家儲蓄。你必須手動手動完成。如果要保存視頻剪輯的可見狀態,請保存到'SharedObject'某種標識符,例如'mc1:Boolean = false; mc2:Boolean = true',並且當您將'SharedObject'讀入內存並查看這些值時,您需要(除了像通常那樣創建影片剪輯外)適當地隱藏/顯示每個值。 – Atriace

相關問題