Показать сообщение отдельно
Старый 24.04.2009, 13:09
Герыч вне форума Посмотреть профиль Отправить личное сообщение для Герыч Найти все сообщения от Герыч
  № 1  
Ответить с цитированием
Герыч
 
Аватар для Герыч

блогер
Регистрация: Apr 2009
Адрес: НиНо
Сообщений: 185
Записей в блоге: 12
Attention Непонятные особенности KeyboardEvent

Во всех нормальных флэш играх одновременное нажатие кнопки вверх и кнопки влево обрабатывается нормально. Но у меня увы это не выходит.. Буду премного благодарен, если кто-нибудь мне объяснит причину..

Как я делаю:
Код AS3:
package gerich {
	import flash.display.MovieClip;
	import flash.events.*;
	import flash.ui.Keyboard;
 
	dynamic public class Spaceship extends MovieClip {
		var speed:Number=1;
 
		public function Spaceship() {
			rotation=0;
			stage.addEventListener(KeyboardEvent.KEY_DOWN,   KeyDown);
			addEventListener(Event.ENTER_FRAME,        Update);
 
		}
 
		public function Update(e : Event):void {
			y-=Math.cos(rotation/180*3.14)*speed;
			x+=Math.sin(rotation/180*3.14)*speed;
 
		} 
 
                //по идее должны отлавливаться все нажатия по очереди
		public function KeyDown(e : KeyboardEvent):void {
			if(e.keyCode == Keyboard.LEFT){trace("left"); rotation-=1;}
			if(e.keyCode == Keyboard.RIGHT){trace("right"); rotation+=1;}
			if(e.keyCode == Keyboard.UP){trace("up"); speed+=0.05;}
			if(e.keyCode == Keyboard.DOWN) 
			{
				trace("down");
				speed-=0.05;
				if(speed<0) speed=0;
			}
 
		}
 
	}
}
при нажатии кнопки вправо на консоль идёт последовательность:
Код:
right
right
right
right
right
...
потом, не отпуская зажимаю вверх, и кнопка вправо начинает игнорироваться:
Код:
right
right              //была нажата вправо
right
up                 //нажал вверх
up
up
up
up
up
..
а хотелось бы, чтобы я с примерно равными пеиодами времени получал бы и вверх и вправо. как-то так:
Код:
up
right
right
up
right
up
up
right
..
Объясните, если знаете.. спасибо