2013-05-12 50 views
1

你好我正在Flash中,在这个应用程序的移动版本的游戏工作我想在一个mousedown事件在一个按钮上,它将等于左,右键等被激活?Flash AS3使得它每当一个按钮被点击在屏幕上就像按下特定的键盘键

在AS3中有没有一种方法可以通过鼠标点击等其他方式激活键盘按键?

leftButton.addEventListener(MouseEvent.MOUSE_DOWN, leftKeyPress) 
function leftKeyPress(e:MouseEvent){ 
    // Left Key is pressed 
     Keyboard.LEFT; 
     trace("trace statement"); 
} 

此代码doesent似乎工作

编辑:还这是非常重要的此类和使用键盘(播放器)类是在两个不同的类,所以我试着让这个当这是点击它被识别为键盘上的按键

回答

0

对不起,但这是全错。你不能触发那样的键盘事件。这是捕捉事件的方式。而你的功能也是一个MouseEvent。应该是键盘事件。一年后我开了Flash。无论如何。 AFAI明白你正试图禁用键盘,直到鼠标点击某处。

leftButton.addEventListener(MouseEvent.MOUSE_DOWN, leftKeyPress); 
var keyEnabled:Boolean = false; 
function leftKeyPress(e:MouseEvent){ 
    keyEnabled = true; 
} 

key.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); 

function keyPressed(e:KeyboardEvent):void{ 
    if(keyPressed){ 
     //do whatever here 
    } 
} 
0

您可以手动调度键盘事件;然而,是不是最好的设计模式:

dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_DOWN, 
           true, 
           false, 
           Keyboard.LEFT, 
           Keyboard.LEFT)); 

这将是更好地建立两个处理:

addEventListener(KeyboardEvent.KEY_DOWN, moveKeyHandler); 
addEventListener(MouseEvent.CLICK, moveMouseHandler); 

从每个处理程序,调用从处理抽象运动功能的函数:

protected function moveKeyHandler(event:KeyboardEvent):void 
{ 
    /* switch statement for key */ 
    moveLeft(); 
} 

protected function moveMouseHandler(event:MouseEvent):void 
{ 
    /* switch statement for button target */ 
    moveLeft(); 
} 

protected function moveLeft():void 
{ 
} 
+0

谢谢你总是回答所有人杰森!我忘了提及这个按钮所在的类以及使用键盘的类(玩家)是两个不同的类,这就是为什么即时通讯试图找到一种方式,以便闪光认为左键已按下,所以玩家在移动设备可以使用按钮输入。所以它不是一个使鼠标点击与键盘按下相同的事情。非常感谢你回答这么多问题! – Farjuan 2013-05-12 20:53:28

相关问题