2011-09-19 47 views
0

确定的一类,激活AS3

,所以我呼吁在一个塔防游戏“转盘”,并呼吁其他类的类 “turret2”我想是这样,当你按下“1”键并点击一个炮塔放置在舞台上,当你点击“2”键炮塔2放置可以有人帮助我呢?(或者指向另一个教程的塔防游戏)

这是另一个类名为“Emptyblock”(我把塔的地方)系统没有发现任何错误,所以...

package { 


//importing required classes for this to work 
import flash.display.MovieClip; 
import flash.events.*; 
public class EmptyBlock extends MovieClip {//defining the class as EmptyBlock 
    private var _root:MovieClip;//creating a _root variable to access root easily 
    private var turretone:uint=49; 
    public function EmptyBlock() {//this function will always run once EmptyBlock is called 
     this.addEventListener(Event.ADDED, beginClass);//create a function that will run once 
     this.addEventListener(Event.ENTER_FRAME, eFrameEvents);//create a enterFrame function 
    } 
    private function beginClass(e:Event):void { 
     _root=MovieClip(root);//setting the _root as the root level 

     this.buttonMode=true;//make this act like a button 
     this.addEventListener(MouseEvent.MOUSE_OVER, thisMouseOver);//adding function for mouseOver 
     this.addEventListener(MouseEvent.MOUSE_OUT, thisMouseOut);//adding function for mouseOut 
     this.removeEventListener(KeyboardEvent.KEY_DOWN, turret1); 

    } 
    private function eFrameEvents(e:Event):void { 
     if (_root.gameOver) {//remove this and listeners if game is over 
      this.removeEventListener(Event.ENTER_FRAME, eFrameEvents); 
      this.removeEventListener(MouseEvent.MOUSE_OVER, thisMouseOver); 
      this.removeEventListener(MouseEvent.MOUSE_OUT, thisMouseOut); 
      this.removeEventListener(KeyboardEvent.KEY_DOWN, turret1); 
      MovieClip(this.parent).removeChild(this); 
     } 
    } 
    private function thisMouseOver(e:MouseEvent):void { 
     //changing the background so the user know's it's clickable 
     this.graphics.beginFill(0x009900); 
     this.graphics.drawRect(0,0,25,25); 
     this.graphics.endFill(); 
    } 
    private function thisMouseOut(e:MouseEvent):void { 
     //changing the background back 
     this.graphics.beginFill(0x333333); 
     this.graphics.drawRect(0,0,25,25); 
     this.graphics.endFill(); 
    } 
    function turret1(e:KeyboardEvent) { 
     if (e.keyCode==turretone) { 
      _root.makeTurret(this.x,this.y);//make the turret 
      //remove all the listeners so it can't be clicked on again 
      this.buttonMode=false; 
      this.graphics.beginFill(0x333333); 
      this.graphics.drawRect(0,0,25,25); 
      this.graphics.endFill(); 
      this.removeEventListener(MouseEvent.MOUSE_OVER, thisMouseOver); 
      this.removeEventListener(MouseEvent.MOUSE_OUT, thisMouseOut); 
      this.removeEventListener(KeyboardEvent.KEY_DOWN, turret1); 


     } 
    } 
} 

}

回答

0

创建一个类来管理您的键盘输入并保存您可以使用的当前项目。一旦按下某个键,该类将切换到链接到该键的项目。你应该考虑把你的代码分解成更小的可管理块。

// tools swaps active tool class when pressing keyboard 
_tools = new ToolManager(stage); // pass stage to class enabling keyboardEvent 
_tools.addTool(turrentType1, 49); // bind class to keyCode 
_tools.addTool(turrentType2, 48); // bind class to keyCode 

// quick listener for click 
_board.addEventListener(MouseEvent.CLICK, onBoardClick); 


private function onBoardClick(event : MouseEvent) : void 
{ 
    //create new using something like new _tools.activeTool(); 
} 
+0

即时通讯仍然有点混淆与此1)什么是工具2)什么是董事会 – Thor625

+0

我不明白 – Thor625