Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Одновременно нажатие клавиш (http://www.flasher.ru/forum/showthread.php?t=145002)

Haiat 27.09.2010 15:11

Одновременно нажатие клавиш
 
Добрый день! Я отлавливаю нажатие нескольких клавиш. Когда держим обе клавиши все как бы нормально, но когда отпускаем например "LEFT", а "UP" остается нажатой, то она перестает функционировать, приходится опять на нее нажимать.

Как правильнее побороть проблему(я только начал изучать AS3 и не хочу писать каким ни будь грязным методом собственного сочинения)

Спасибо

Код AS3:

private function moveTank(e:KeyboardEvent):void {
                        if (e.keyCode==Keyboard.UP) {
                                upPressed=true;
                        } else if (e.keyCode==Keyboard.DOWN) {
                                downPressed=true;
                        } else if (e.keyCode==Keyboard.LEFT) {
                                leftPressed=true;
                        } else if (e.keyCode==Keyboard.RIGHT) {
                                rightPressed=true;
                        }
                        if (upPressed) {
                                if (leftPressed) {
                                        rotation-=5;
                                } else if (rightPressed) {
                                        rotation+=5;
                                }
                                if (currentSpeed+acceleration<maxSpeed) {
                                        currentSpeed+=acceleration;
                                }
                                trace(1);
                                y-=currentSpeed*Math.cos(rotation*Math.PI/180);
                                x+=currentSpeed*Math.sin(rotation*Math.PI/180);
                        }
 
                }
 
                private function stopTank(e:KeyboardEvent):void {
                        if (e.keyCode==Keyboard.UP) {
                                stage.addEventListener(Event.ENTER_FRAME,deleteAcceleration);
                                upPressed=false;
                        } else if (e.keyCode==Keyboard.DOWN) {
                                downPressed=false;
                        } else if (e.keyCode==Keyboard.LEFT) {
                                leftPressed=false;
                        } else if (e.keyCode==Keyboard.RIGHT) {
                                rightPressed=false;
                        }
 
                }


tsarapkabel 27.09.2010 16:44

Я подозреваю, что тут беда в контроллере, а не AS3...

Haiat 27.09.2010 18:22

а как быть?))

andrew911 27.09.2010 18:26

Может дать больше кода, связанного с проблемой?

tsarapkabel 27.09.2010 18:45

Попробуй те же самые комбинации отследить вне флеша. Если они везде срабатывают одинаково плохо, то остаётся 2 варианта:

1) попробовать реализовать автонажатие (но тогда оно может не отпустить в нужный момент)
2) попробовать другие клавиатуры, но это не прибавит работоспособности остальным пользователям.

Haiat 27.09.2010 19:08

да нет, Вы что. клавиатура нормально работает. В любой игре(например гонки какие нибудь) такие проблемы же не возникают. просто видимо что то не так в моем скрипте

iillyyaa 27.09.2010 21:22

клавиатура может и нормально работает, вот только устроена она для набивания буковок а не одновременного нажимания нескольких клавиш..
нажми в форме написания ответа букву "ф" и держи, а потом нажми букву "о" к примеру и держи.. что вышло ? а теперь отпусти "о", какой результат ? буква "ф" ведь нажата...

Haiat 27.09.2010 22:04

ну взять любую игру к примеру даже http://www.miniclip.com/games/miniclip-rally/en/

dimarik 27.09.2010 23:07

Есть более дружелюбные клавиатуры. Поищите по форуму, была у кого-то такая проблема.

Haiat 27.09.2010 23:23

тогда наверно как вариант. по событию определять нажатые клавиши и запускать ENTER_FRAME


Часовой пояс GMT +4, время: 12:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.