2014-09-05 2 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

С помощью оператора var в вашем методе Main вы назначаете экземпляры локальным переменным, которые ограничены только этим методом. Обновите свой код следующим образом, и вы должны получить ожидаемые результаты:

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 
     } 
    } 
} 
Смежные вопросы