2014-04-14 131 views
0

我不明白这是怎么回事 这是我Main.as错误1009:无法访问

package { 

import flash.display.MovieClip; 
import flash.events.MouseEvent; 

public class Main extends MovieClip { 

    public var pirkles:Circles = new Circles() 

    public function Main() { 

     gotoAndStop(1) 

     playbtn.addEventListener(MouseEvent.CLICK, playscreen) 

    } 

    public function playscreen(event:MouseEvent):void { 

     gotoAndStop(2) 

     addChild(pirkles) 

    } 
} 

} 

空对象引用的方法的财产,这是我的Circles.as

package { 
import flash.display.MovieClip 
import flash.events.Event; 
import flash.events.KeyboardEvent; 
import flash.ui.Keyboard 
import flash.events.MouseEvent; 

public class Circles extends MovieClip{ 

    public function Circles():void { 
     stage.addEventListener(KeyboardEvent.KEY_DOWN, MOVE) 
     this.y = 175 
     this.x = 10 
     } 

    public function MOVE(event:KeyboardEvent):void { 

     if (event.keyCode == Keyboard.RIGHT) { 

      this.x = this.x+10 

     } 
     else if (event.keyCode == Keyboard.LEFT) { 

      this.x = this.x-10 

     } 
     else if (event.keyCode == Keyboard.UP) { 

      this.y = this.y-10 

     } 
     else if (event.keyCode == Keyboard.DOWN) { 

      this.y = this.y+10 

     } 

    } 

} 

} 

现在我收到一个错误,说我的Circles.as的第11行和我的Main.as的第8行有问题。但是,在这些方面,我不明白是什么导致了这个问题。我在第11行添加了一个事件监听器,但是当我将它取出时它就可以工作。另外,在第8行,我刚刚定义了一个变量。

回答

0

您无法访问类构造函数中的舞台。 所以行

stage.addEventListener(KeyboardEvent.KEY_DOWN, MOVE) 

是导致错误。

如果您需要访问阶段,在构造函数中的ADDED_TO_STAGE事件添加监听器,并在回调函数中,你将能够访问舞台

所以:

public function Circles():void { 
     this.addEventListener (Event.ADDED_TO_STAGE, onAddedToStage); 
     this.y = 175 
     this.x = 10 
} 

private function onAddedToStage (evt:Event):void { 
       stage.addEventListener(KeyboardEvent.KEY_DOWN, MOVE) 

} 
+0

莫非你给我看一个例子?我对actionscript相当陌生。 – user3530344

+0

另外,我的Main.as中的第8行有什么问题吗? – user3530344

+0

完成,请检查并且不要忘记标记答案为可接受的,如果有帮助的话 –

相关问题