2014-10-12 3 views
0

ActionScript 3.0을 처음 프로그래밍 언어로 배우려고합니다. (이전에는 PHP로 약간의 실수를 저질렀습니다.)오류 : AS3의 정의되지 않은 속성에 대한 액세스

이 코드가 : 나는의 부울 값을 얻으려고

package 
{ 
    import flash.display.Bitmap; 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 
    import flash.text.TextField; 

    /** 
    * ... 
    * @author Mattia Del Franco 
    */ 
    [Frame(factoryClass="Preloader")] 
    public class Main extends Sprite 
    { 
     [Embed(source = "img/pgnew.png")] 
     internal var MyImage:Class; 
     // La riga embed importa l'immagine, la riga sotto la assegna ad una classe chiamata MyImage 

     public function Main():void 
     { 
      if (stage) init(); 
      else addEventListener(Event.ADDED_TO_STAGE, init); 
     } 

     private function init(e:Event = null):void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, init); 
      // entry point 

      trace ("Hello World!"); 
      var myBitmap:Bitmap = new MyImage; //nuova variabile myBitmap al quale viene assegnato la creazione di un nuovo MyImage (trattato come un oggetto) 
      addChild(myBitmap); 

      var writeText:TextField = new TextField(); 
      writeText.text = "Ciao Mondo!"; 
      this.addEventListener(MouseEvent.CLICK, function(){ 
      addChild(writeText); 
      var clicked:Boolean = true; 
      return clicked; 
      }); 

      this.addEventListener(MouseEvent.CLICK, function() { 
       if (clicked == true) { 
       removeChild(writeText); 
      } else { 
       addChild(writeText); 
      } 
      }); 

     } 

    } 
} 

두 번째의 EventListener에서를 클릭 (첫 번째의 EventListener에 지정된)하지만 난이 오류가이 프로그램을 디버깅 갈 때 :

col : 9 오류 : 정의되지 않은 속성 액세스가 클릭되었습니다. if (클릭 == true) {

왜 이런 일이 발생합니까?

답변

1

"클릭 한"변수에 액세스 할 수없는 이유는이 변수가 다른 범위에 있기 때문입니다. 함수 (첫 번째 이벤트 리스너) 내에서 변수를 선언하면 해당 함수 내에서만 변수에 액세스 할 수 있습니다. 두 번째 이벤트 수신기는 해당 변수에 액세스 할 수 없습니다. 내 대답은 rigth 경우

 var clicked:Boolean = false; 

     var writeText:TextField = new TextField(); 
     writeText.text = "Ciao Mondo!"; 
     this.addEventListener(MouseEvent.CLICK, function(){ 
     addChild(writeText);   
     clicked = true; 
     return clicked; 
     }); 

     this.addEventListener(MouseEvent.CLICK, function() { 
      if (clicked == true) { 
      removeChild(writeText); 
     } else { 
      addChild(writeText); 
     } 
     }); 
+0

@Mattia 당신이 그것을 받아 들일 수 : 여기

는 문제를 해결하는 좋은 방법입니다 –

관련 문제