2011-05-12 20 views
0
package 
    { 
     public class Main extends Sprite { 
     private var a=0; 
     private var b=0; 
     private var c=2; 


     public function Main(){ 
      a=9; 
      b=4; 
      c=8; 
     } 
    } 
} 

是否有一個簡單的方法來我所有的變量復位到當我第一次裝包,這樣我就不必經過所有的變量和手動復位他們,他們的方法是什麼?重置主類

謝謝。

回答

0

簡短的回答是否定的。然而,一種解決方案可能是將您的類變量分配給您在函數中聲明的新變量。這將保留初始值並使其可用於其他功能。只有在類被重新實例化時纔會發生真正的「重置」。

+0

我有一種感覺,那就是答案,我不認爲有重新實例化Main()類的方法,會不會有?假定Main函數不是立即重新分配變量。 – 2011-05-12 10:36:10

+0

我不這麼認爲。但是,您可以將這些值嵌入到單獨的類中,並在每次需要重置它們時從Main內重新實例化該類。這會產生一些額外的開銷,但可能會完成您所需要的。 +1 @Marty Wallace建議的方法,因爲這將保留你的價值,而不需要新班級的開銷。 – Geoff 2011-05-12 12:25:08

1

你可以保存當類被初始化的變量,然後加載它們,這將有效地重置。試試這個:

package 
{ 
    import flash.display.Sprite; 

    public class Main extends Sprite 
    { 
     private var _saved:Array = []; 

     public var awesome:Boolean = true; 
     public var val:String = "hello"; 

     public function Main() 
     { 
      saveVars("awesome","val","alpha"); 

      awesome = false; 
      alpha = 0.5; 
      val = "there"; 

      loadVars(); 

      trace(alpha); // 1 
      trace(val) ;// hello 
      trace(awesome); // true 
     } 

     /** 
     * Saves defined vars 
     * @param ...args A list of variables to save 
     */ 
     public function saveVars(...args):void 
     { 
      _saved = []; 

      var i:String; 
      for each(i in args) 
      { 
       _saved[i] = this[i]; 
      } 
     } 

     /** 
     * Loads from last save 
     */ 
     public function loadVars():void 
     { 
      var i:String; 
      for(i in _saved) 
      { 
       this[i] = _saved[i]; 
      } 
     } 
    } 
} 

這顯然是能夠在整個應用程序運行時的任何時刻保存變量的優勢。

0

遲到?

爲什麼不創建一個新的類,通過「Import」和「AddChild」語法加載,您可以將變量刪除並重新加載?

+0

你的建議是非常大的,應該通過至少提供一些你的意思的僞代碼來澄清。現在這個答案沒有幫助任何人。 – 2013-01-19 14:36:52