试图在我的游戏中启用鼠标事件

时间:2014-02-12 20:26:13

标签: actionscript-3 flash actionscript mouseevent keyboard-events

游戏目前有键盘启用的事件。尝试将其更改为鼠标,但需要帮助。

我的代码如下:

public function SetUp()
{ 
    hero=new Hero;addChild(hero);
    hero.x=400;hero.y=500;hero.dead=false;
    scorebox=new ScoreBox;addChild(scorebox);
    scorebox.x=25;scorebox.y=12;
    score=0;
    stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownHandler);
    stage.addEventListener(KeyboardEvent.KEY_UP, KeyUpHandler);
    BulletArray= new Array;EnemyArray= new Array;
    timer.start();
}//setup
enter code here
public function KeyDownHandler(e:KeyboardEvent){
        //trace(e.keyCode);
        if(e.keyCode==39){Right=true;}
        if(e.keyCode==37){Left=true;}
        }//keydown

    public function KeyUpHandler(e:KeyboardEvent){
        if(e.keyCode==39){Right=false;}
        if(e.keyCode==37){Left=false;}
        if(e.keyCode==32){Space=true;}
        }//keyup
enter code here

//处理用户输入使用了以下函数

            public function ProcessUserInput(){
            if(Right && hero.x<780){hero.x+=5;}
            if(Left && hero.x>20){hero.x-=5;}
            if(Space){Shoot();}
        }//Process User Input

///我写了我的鼠标控制代码。但我似乎无法在我现在的代码中启用它

//鼠标控制的代码如下 //需要帮助将它合并到我的主类代码中。

enter code here
var leftDown:Boolean = false;
var upDown:Boolean = false;
var rightDown:Boolean = false;
var downDown:Boolean = false;



stage.addEventListener(MouseEvent.MOUSE_MOVE, moveCharMouse);


mcMain.addEventListener(Event.ENTER_FRAME, moveChar);
function moveChar(event:Event):void{
    if(leftDown){
        mcMain.x -= 5;
    }
    if(upDown){
        mcMain.y -= 5;
    }
    if(rightDown){
        mcMain.x += 5;
    }
    if(downDown){
        mcMain.y += 5;
    }
    if(mcMain.x <= 0){
        mcMain.x += 5;
    }
    if(mcMain.y <= 0){
        mcMain.y += 5;
    }
    if(mcMain.x >= stage.stageWidth - mcMain.width){
        mcMain.x -= 5;
    }
    if(mcMain.y >= stage.stageHeight - mcMain.height){
        mcMain.y -= 5;
    }

}

function moveCharMouse(event:MouseEvent){
    mcMain.x = stage.mouseX - mcMain.width/2;
    mcMain.y = stage.mouseY - mcMain.height/2;
}

2 个答案:

答案 0 :(得分:0)

首先你的代码是一团糟。问题可能是因为你没有导入鼠标事件,但因为你没有显示导入,你不告诉我们你的问题是什么:“我得到错误......”或“我的鼠标事件不起作用”。你甚至没有告诉我们mcMain是什么,我们如何帮助你?

答案 1 :(得分:0)

我会将所有这些单独的“控制器”写入可重用的类并将sage引用传递给它们。从那里,您可以从每个类内部设置阶段范围处理程序。每个类都是有组织的,只保存其包含和变量,并且可以自我终止。经典封装。