2011-09-19 61 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