![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Jan 2013
Сообщений: 12
|
Всем привет!
Столкнулся с проблемой -не работает одновременное нажатие клавиш. Никак не могу ее решить. Может ктото подсказать? класс Hero public class Hero extends MovieClip{ public var heroPosX:int = 0;//текущее положение игрока public var heroPosY:int = 0;//текущее положение игрока private var _hurt:Boolean = false;//повреждение private var controlsEnabled:Boolean = true;//доступность управления private var _hero:MovieClip;//скин персонажа private var moveKeyPressed = false;//нажата ли кнопка перемещения героя private var _playerMovingHero = false;//движется ли герой public var heroAcselerationX:Number = 300;//скорость героя public var heroAcselerationY:Number = 100;//скорость героя public var acceleration:Number = 1;//стартовая скорость public var maxVelocity:Number = 5;//макс скорость public function Hero(){ //constructor addEventListener(Event.ADDED_TO_STAGE, init); } public function init(e:Event):void { //создаем героя _hero = new HeroSkin(); addChild(_hero); //останавливаем анимацию героя _hero.stop(); // Listeners stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedDown); stage.addEventListener(KeyboardEvent.KEY_UP, keyPressedUp); addEventListener(Event.ENTER_FRAME, update); } // обработка нажатия клавиш public function keyPressedDown (e:KeyboardEvent):void { if (e.keyCode == 37){ heroAcselerationX += -acceleration; moveKeyPressed = true; } if (e.keyCode == 38){ heroAcselerationY += -acceleration; moveKeyPressed = true; } if (e.keyCode == 39){ heroAcselerationX += acceleration; moveKeyPressed = true; } if (e.keyCode == 40){ heroAcselerationY += acceleration; moveKeyPressed = true; } //торможение else if (!moveKeyPressed && _playerMovingHero) { _playerMovingHero = false; //acceleration -=1; //увеличиваем трение } /*if (e.keyCode == 37 && e.keyCode == 38){ _hero.x += -acceleration; _hero.y += -acceleration; }*/ } public function update(e:Event):void { _hero.x = heroAcselerationX; _hero.y = heroAcselerationY; //ускорение if (moveKeyPressed && !_playerMovingHero) { _playerMovingHero = true; acceleration += 1; //уменьшаем трение. } } // трение public function friction(accel) { acceleration += 1; if (acceleration > 5) { acceleration = 5; } return acceleration; } //отпускание кнопки public function keyPressedUp(e:KeyboardEvent) { moveKeyPressed = false; } //анимация движения public function updateAnimation() { if (currentFrame == 5) { gotoAndPlay(1); } else { play(); } } //получаем кординаты игрока public function updateHeroPos(heroX:int, heroY:int):void { heroPosX = heroX; heroPosY = heroY; } |
|
|||||
|
Регистрация: Oct 2005
Сообщений: 217
|
точно не помню как делать , но тут есть решение http://easyflash.org/flashlearn/flas...-knopkami.html
P.S. на курс есть торрент |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
package { import flash.display.*; import flash.events.*; public class Hero extends Sprite { private var _keys:Object; //- CONSTRUCTOR ------------------------------------------------------------------------------------------- public function Hero() { init(); } //- INIT -------------------------------------------------------------------------------------------------- //- STATIC METHODS ---------------------------------------------------------------------------------------- //- PUBLIC & INTERNAL METHODS ----------------------------------------------------------------------------- private function init():void { _keys = {}; addEventListener(Event.ADDED_TO_STAGE, onAdded); } //- PRIVATE &PROTECTED METHODS --------------------------------------------------------------------------- //- EVENT HANDLERS ---------------------------------------------------------------------------------------- private function onUpdatePosition(e:Event):void { if (_keys[37] == true) { //heroAcselerationX += -acceleration; //moveKeyPressed = true; } if (_keys[38] == true) { //heroAcselerationY += -acceleration; //moveKeyPressed = true; } if (_keys[39] == true) { //heroAcselerationX += acceleration; //moveKeyPressed = true; } if (_keys[40] == true) { //heroAcselerationY += acceleration; //moveKeyPressed = true; } //... ТУТ ТВОЙ КОД } private function onKeyUp(e:KeyboardEvent):void { _keys[e.keyCode] = false; } private function onKeyDown(e:KeyboardEvent):void { _keys[e.keyCode] = true; } private function onAdded(e:Event):void { removeEventListener(Event.ADDED_TO_STAGE, onAdded); stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); stage.addEventListener(Event.ENTER_FRAME, onUpdatePosition); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp); } //- ACCESSORS --------------------------------------------------------------------------------------------- //- END --------------------------------------------------------------------------------------------------- } } |
|
|||||
|
Регистрация: Jan 2013
Сообщений: 12
|
Спасибо, уже нашел решение
|
![]() |
![]() |
Часовой пояс GMT +4, время: 10:21. |
|
|
« Предыдущая тема | Следующая тема » |
|
|