在as3中激活一个类

时间:2011-09-19 01:12:00

标签: actionscript-3

好的,

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


        }
    }
}

}

1 个答案:

答案 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();
}