zoukankan      html  css  js  c++  java
  • 关于Actionscript 3.0中KeyboardEvent的调试需注意的问题

    今天在做一个节拍游戏,在加入了KeyboardEvent至主类后,发现调试的时候,无法响应键盘的响应,只能响应其中的空格键。翻查了下资料,没发现写的类有什么问题。

    以下是其中的代码:

    		public function RhythmGame(){
    			music = new SoundProcessor(BACKGROUND_MUSIC_PATH);
    			
    			cursor = new CursorController(0);
    			cursor.name = "cursor";
    			cursor.start();
    			
    			trace("begin");
    			addChild(cursor);
    			
    			KeyList = new Object();
    			stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler);
    			stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler);
    			stage.addEventListener(Event.ENTER_FRAME, onHitTest);
    		}
    		
    		//Key up event handler
    		private function onKeyUpHandler(e:KeyboardEvent):void{
    			delete KeyList[e.keyCode];
    		}
    		
    		//Key down event handler
    		private function onKeyDownHandler(e:KeyboardEvent):void{
    			KeyList[e.keyCode] = true;
    		}
    
    		//Check the cursor posistion when key press
    		public function onHitTest(e:Event):void{
    			var numChild:Number = this.numChildren;
    			var obj:Object = new Object();
    			
    			obj = this.getChildByName("cursor");
    			if (KeyList[Keyboard.UP]){
    				trace(obj.y - 100);
    			}
    		}

    查阅资料后发现,KeyboardEvent的Sender是InteractiveObject,也就是可以是Sprite,MovieClip,Stage,Loader,TextField类。但是如果Sender不是Stage的时候,需要注意一个焦点的问题。也就是需要加入以下一句:

    stage.focus = my_sprite;
    

    不过这里,我使用了Stage作为Sender。但是一直无法响应KEY_UP, KEY_DOWN事件,但是在测试的时候,我注意到了,当我按下按键时,后面的工具菜单会变化,那是否意味着,测试播放器响应了快捷键呢?

    在播放器的控制菜单,真的发现有一项是“禁用快捷键”。如果大家的flash需要用到KeyboardEvent的时候,记得勾选“禁用快捷键”。这样swf就能响应键盘事件了。

  • 相关阅读:
    ZOJ 1450
    HDU 3932
    POJ 3348
    POJ 1873
    POJ 1228
    POJ 2007
    POJ 1113
    POJ 1696
    POJ 1329
    HDU 3432
  • 原文地址:https://www.cnblogs.com/enixyu/p/2173683.html
Copyright © 2011-2022 走看看