好的,
所以我在塔防游戏中有一个名为“炮塔”的班级,另一个班级叫做 “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 :(得分: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();
}