Actionscript 3 AS3中键组合的EventListener?
我试图找出退出flash独立应用程序的条件和“快捷方式”。我想按两个键,这两个键的组合“C+M”应该退出我的应用程序。 这是我的密码,但仍然不起作用。我尝试让舒尔应用程序允许我同时按下多个按钮,然后我创建了退出功能。 任何答案都很好Actionscript 3 AS3中键组合的EventListener?,actionscript-3,flash,animation,actionscript,Actionscript 3,Flash,Animation,Actionscript,我试图找出退出flash独立应用程序的条件和“快捷方式”。我想按两个键,这两个键的组合“C+M”应该退出我的应用程序。 这是我的密码,但仍然不起作用。我尝试让舒尔应用程序允许我同时按下多个按钮,然后我创建了退出功能。 任何答案都很好 var-keyPressedC:Boolean; var-keyPressedM:布尔型; addEventListener(KeyboardEvent.KEY_DOWN,check_KEY_DOWN,false,0,true); addEventListener
var-keyPressedC:Boolean;
var-keyPressedM:布尔型;
addEventListener(KeyboardEvent.KEY_DOWN,check_KEY_DOWN,false,0,true);
addEventListener(KeyboardEvent.KEY\u UP,check\u KEY\u UP,false,0,true);
addEventListener(Event.ENTER_FRAME,check_keys,false,0,true);
功能检查键(事件:事件):无效
{
如果(按键C)
跟踪(“C”)
如果(按键EDM)
跟踪(“推送M”)
}
功能检查键按下(事件:键盘事件):无效
{
如果(event.keyCode==67)
keyPressedC=true;
如果(event.keyCode==77)
按键EDM=真;
}
功能检查按键(事件:键盘事件):无效
{
如果(event.keyCode==67)
keyPressedC=false;
如果(event.keyCode==77)
按键EDM=假;
}
导入flash.system.fscommand;
stage.addEventListener(KeyboardEvent.KEY_向下,输入KeyHandlerCM);
函数enterKeyHandlercm(事件:KeyboardEvent):无效
{
if(event.keyCode==Keyboard.C&&event.keyCode==Keyboard.M)
{
fscommand(“退出”);
}
}
在enterKeyHandlercm
块中,您的逻辑应该是计算按键按下的值,而不是按键代码值
function enterKeyHandlercm(event:KeyboardEvent):void
{
if (keyPressedM == true && keyPressedC == true)
{
fscommand("quit");
}
}
有了这段代码,您的5个关键可能性(c向上、c向下、m向上、m向下、c+m向下)中的每一个都会添加一个不同的MC
请原谅我的长篇大论,但这样我们就不会遗漏任何东西。我添加ball构造函数的原因是因为我只有笔记本电脑,所以我必须使用在线IDE,我不知道如何找到输出窗口或运行调试器,而且它不接受系统命令。但我可以用ball方法确认的是,当“c”和“m”被按下时,一个唯一的MC被实例化。这意味着,当同时按下两个键时,我们的代码现在会使flash注册一个唯一的事件 什么不起作用?您是否收到错误?没有错误,但首先,我没有收到任何跟踪输出“推送C”或“M”,其次,C+M组合没有退出应用程序。这应该可以解决您的问题,但为了进一步说明它不工作的原因,
event.KeyCode
只有一个值,因此,它永远不会同时等于Keyboard.M
和Keyboard.C
“如果,则单个语句不需要大括号。”s@BadFeelingAboutThis谢谢将我的答案编辑回原稿。我必须开始实现它,这样我才能像个老板一样编码!那么,有没有其他方法可以通过按C+M按钮从Flash重新启动exe文件呢?例如,我可以重新配置随机键,这样文件会认为我按下了ctrl+q键吗?这里已经有了很好的讨论。
package {
import flash.display.*;
import flash.events.*;
import flash.system.fscommand;
import flash.system.System; //add this if you try System.exit(0);
public class FlashTest extends MovieClip
{
public function FlashTest()
{
var keyPressedC:Boolean;
var keyPressedM:Boolean;
// need to add eventListener to stage
// default values work fine.
stage.addEventListener(KeyboardEvent.KEY_DOWN, check_key_down);
stage.addEventListener(KeyboardEvent.KEY_UP, check_key_up);
stage.addEventListener(Event.ENTER_FRAME, check_keys);
function check_key_down(event:KeyboardEvent):void
{
if(event.keyCode == 67)
{
keyPressedC = true;
newBall(-100);
}
if(event.keyCode == 77)
{
keyPressedM = true;
newBall();
}
}
function check_key_up(event:KeyboardEvent):void
{
if(event.keyCode == 67)
{
keyPressedC = false;
newBall(-50);
}
if(event.keyCode == 77)
{
keyPressedM = false;
newBall(50);
}
}
function enterKeyHandlercm(event:KeyboardEvent):void
{
if (keyPressedM == true && keyPressedC == true)
{
newBall(100);
fscommand("quit");
// or try System.exit(0);
}
}
function newBall(x:Number=0):void
{
var ball:Sprite = new Sprite();
ball.graphics.lineStyle();
ball.graphics.beginFill(0x000000);
ball.graphics.drawCircle(0,0,20);
ball.graphics.endFill();
addChild(ball);
ball.x = stage.stageWidth/2+x;
ball.y = stage.stageHeight/2;
}
}
}
}