2014-09-05 203 views
0
package{ 
import flash.display.MovieClip; 
import flash.utils.Timer; 
import flash.events.TimerEvent; 
import flash.events.MouseEvent; 

public class Main extends MovieClip{ 

    public var ability1,ability3:Ability; 

    public function Main(){ 

     var ability1 = new Ability(30,30,"Ability Name","...",5,false); 
     addChild(ability1);   
     var ability2 = new Ability(60,30,"Ability Name2","...",3,false); 
     addChild(ability2); 
     var ability3 = new Ability(45,60,"Ability Name3","...",5,true); 
     addChild(ability3); 
     stage.addEventListener(MouseEvent.CLICK, Check);  

     trace(ability1.Points); //outputs the value 

    } 
    public function Check(event:MouseEvent):void{ 

     trace(ability1.Points); //outputs error 

    } 
}} 

第二個跟蹤給出了這個錯誤:「TypeError:Error#1010:一個術語未定義,沒有任何屬性在Main/Check()」你能指出我至少嗎?未定義的屬性AS3

謝謝。

回答

1

通過在Main方法中使用var語句,可以將實例分配給僅在該方法範圍內的局部變量。更新您的代碼如下,你應該得到你期望的結果:

package{ 
    import flash.display.MovieClip; 
    import flash.utils.Timer; 
    import flash.events.TimerEvent; 
    import flash.events.MouseEvent; 

    public class Main extends MovieClip{ 

     public var ability1:Ability; 
     public var ability3:Ability; 

     public function Main(){ 

      // I'm a local property scoped only to this method 
      var ability2 = new Ability(60,30,"Ability Name2","...",3,false); 
      addChild(ability2); 

      // We're instance properties and can be accessed from any method 
      // in the class (and from outside the class as well) 
      ability1 = new Ability(30,30,"Ability Name","...",5,false); 
      addChild(ability1); 

      ability3 = new Ability(45,60,"Ability Name3","...",5,true); 
      addChild(ability3); 
      stage.addEventListener(MouseEvent.CLICK, Check);  

      trace(ability1.Points); //outputs the value 

     } 
     public function Check(event:MouseEvent):void{ 

      trace(ability1.Points); //outputs the value 
      trace(ability3.Points); //outputs the other value 
     } 
    } 
}