Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > Jarproger

Рейтинг: 4.00. Голосов: 3.

Продвинутая работа с клавой в AS 3.0

Запись от Jarproger размещена 08.01.2011 в 20:38
Обновил(-а) Jarproger 08.01.2011 в 20:45

Многие из нас, те, кто создавал игры в AS-2, знают, что там был удобный объект Key, с помощью которого можно было отслеживать сразу 2, а то и 3 кнопки на клавиатуре одновременно в onEnterFrame.

Но в ActionScript 3 такой возможности не предоставлено, а событийное реагирование в случае покадровой игры не очень-то и удобно. Поэтому я написал класс KeyCheck.as, использовать который предельно просто. Он позволяет отслеживать нажатые клавиши, не принимая во внимание событийность.

1) Скачиваем класс, помещаем его в оду папку с fla-файлом и в коде создаем объект
Код AS3:
var key = new KeyCheck(stage);
2)Теперь везде, где хотите, можете узнать код клавиши
Код AS3:
if (key.code[65]) {
//делам что-либо при нажатии клавиши с кодом 65
}

А алгоритм очень прост - для каждой клавиши есть флаг в массиве - true/false; И мы проверяем значение этого элемента массива.

Желаю удачи в кодинге игр))
Вложения
Тип файла: zip KeyCheck.zip (642 байт, 218 просмотров)
Всего комментариев 31

Комментарии

Старый 08.01.2011 22:51 samana вне форума
samana
 
Аватар для samana
Отлично!
Старый 09.01.2011 00:51 Zebestov вне форума
Zebestov
 
Аватар для Zebestov
Ну отл.! Только я бы сделал

Код AS3:
private var _code:Array = [];
и

Код AS3:
public function code(keyCode:int):Boolean
{
    return _code[keyCode] ? _code[keyCode] : false;
}
ну так... из соображений скрытности и определенности )
Обновил(-а) Zebestov 09.01.2011 в 16:37
Старый 09.01.2011 02:16 Котяра вне форума
Котяра
 
Аватар для Котяра
ну и тут наверное синглтон в тему или статик свойство.
Старый 09.01.2011 12:04 alatar вне форума
alatar
 
Аватар для alatar
Зачем в конструкторе для параметра выбран тип Object?
Код AS3:
public function KeyCheck(clip:Object)
Не логичнее было использовать DisplayObject, ну или IEventDispatcher? Или всегда надо оставлять место для RTE?
Использование типа Array для code, тоже не ясно. По-сути массив, в итоге, используется как ассоциативный.
Старый 09.01.2011 14:38 f.g.programmer вне форума
f.g.programmer
 
Аватар для f.g.programmer
Здесь важна идея, а не реализация. Сам я участвовал в создании только мышинно-управляемых игр, поэтому не сталкивался в с такой задачей. Но для аркадо-подобных игр это может быть полезным.
Старый 09.01.2011 15:05 alatar вне форума
alatar
 
Аватар для alatar
Цитата:
Здесь важна идея, а не реализация.
А что нового в идее?
Старый 09.01.2011 15:19 samana вне форума
samana
 
Аватар для samana
Цитата:
А что нового в идее?
Если для меня, то я бы так не догадался сделать, с таким маленьким количеством строк кода.
Старый 09.01.2011 21:55 Jarproger вне форума
Jarproger
 
Аватар для Jarproger
Спасибо, если код понравился)
Старый 09.01.2011 21:55 Jarproger вне форума
Jarproger
 
Аватар для Jarproger
Главное - простота
Старый 10.01.2011 00:17 iNils вне форума
iNils
 
Аватар для iNils
Цитата:
Жуть. Можно, например, Ваш массив модифицировать. Причем случайно. Получаем ссылку на массив, "нечаянно" его модифицируем и... серебристый пушной зверь нас наведывает.
+имена методов пишут с маленькой буквы.
Старый 10.01.2011 12:25 udaaff вне форума
udaaff
Старый 10.01.2011 15:01 dark256 вне форума
dark256
 
Аватар для dark256
Вот у меня вопрос. К АС3 постоянно пишутся какие-то затычки, заглушки, заплатки, подпорки.
Для колеса мышки, для графики, теперь еще и для кнопок. Я вот не пойму - почему так все криво в АС3?
Или сам по себе АС3 НАСТОЛЬКО крут, что на подобные мелочи даже внимания не стоит обращать?

ВКонтакте АС3 приложения, к примеру, все как одно, не обрабатывают колесо мышки. Точнее обрабатывают, но криво. И поделать с этим авторы, кстати, по полгода уже ничего не могут. Как результат - куча ругани и урезанные интерфейсы. Это их лень, непрофессионализм, или все-таки АС3 - это не так хорошо, как казалось?
Старый 10.01.2011 15:38 andrew911 вне форума
andrew911
dark256
AS3 дает вам материал, работайте с ним и собирайте, что вам нравится.
По поводу колеса используйте http://etcs.ru/blog/as3/mousewheel/

Ну а плохому танцору, как говорится...
Старый 10.01.2011 20:44 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Ассемблер — самый мощный язык. На нём можно написать абсолютно всё, даже то, что можно написать только на нём. При этом он очень скуп по функциональности: прерывания да регистры, по большей части.

Это так, пища для размышлений.
Старый 10.01.2011 21:49 membrilius вне форума
membrilius
 
Аватар для membrilius
Ассемблер жесть.
Сейчас у С++ есть много библиотек, которые позволяют и без ассемблера запрограммировать микроконтроллер скажем. У меня опыт с ним был, мне кажется, что бы реально понять что к чему, надо было родиться когда компьютер в квартире не помешался.
Старый 11.01.2011 02:18 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Бедному микроконтроллеру с кэшем в пару килобайт пишут приложение с либами плюсов, кхм.)

Вроде сипипи компиляторов под микроконтроллеры нет (да и вряд ли будут вообще), а вот чистого си — есть.
Тема весьма интересная, но это очень оффтоп.
Старый 11.01.2011 13:22 Jarproger вне форума
Jarproger
 
Аватар для Jarproger
Какое отношение ассемблер имеет к флешу?
Старый 11.01.2011 13:40 Mur4ik вне форума
Mur4ik
Цитата:
Вроде сипипи компиляторов под микроконтроллеры нет (да и вряд ли будут вообще), а вот чистого си — есть.
А вроде есть и на плюсах писать можно (высокоуровневые вещи желательно) и всё зависит от конкретного случая, конкретного микроконтроллера, тулчеина и еще там много разных умных слов. )
Т.ч. давайте обойдемся без программирования под микроконтроллеры на as3
Обновил(-а) Mur4ik 11.01.2011 в 13:42
Старый 11.01.2011 17:00 andrew911 вне форума
andrew911
Цитата:
Какое отношение ассемблер имеет к флешу?
Человек жаловался, что AS3 недостаточно высокоуровневый. Ему в пример привели, что на низкоуровневом языке можно делать больше, чем на высокоуровневом.
Старый 12.01.2011 19:21 Jarproger вне форума
Jarproger
 
Аватар для Jarproger
Всё равно асм здесь не в тему
А если говорить о нём - то он хорошо идёт вместе с С++ - делать вставочки в местах, где особо жёсткие алгоритмы. Например, в играх можно hitTest на нём написать или AI.
Также на нём можно любой exe или com отладить
Старый 12.01.2011 20:58 andrew911 вне форума
andrew911
Цитата:
Всё равно асм здесь не в тему
А если говорить о нём - то он хорошо идёт вместе с С++ - делать вставочки в местах, где особо жёсткие алгоритмы. Например, в играх можно hitTest на нём написать или AI.
Также на нём можно любой exe или com отладить
Смысл не в том, что надо использовать асм вместе с флешем.
Смысл - на асме можно делать все, хотя функционала очень мало.
Также и флеш, если чего-то не хватает, то можно это сделать.

Не стоит все воспринимать буквально.
Старый 12.01.2011 22:51 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
AI на ассемблере, ага.
Старый 13.01.2011 00:04 incvizitor вне форума
incvizitor
 
Аватар для incvizitor
Цитата:
У меня опыт с ним был, мне кажется, что бы реально понять что к чему, надо было родиться когда компьютер в квартире не помешался.
Когда я родился у нас дома уже был компъютер, и в ассемблере (Z80, 8086) я не нашел ничего сверхвероятного.

Код AS3:
AI на ассемблере, ага.
Где то очень давно видел 3D лабиринт на асемблере, так что и AI можно))
Старый 13.01.2011 00:09 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Есть и операционная система, написанная полностью на ассемблере.

Однако AI никто на ассембеле делать не будет, т.к. поддерживать такое "чудо" будет крайне сложно. Отдельные вставки - возможно, но эти отдельные вставки в своей абстракции к AI отношения иметь не будут.
Старый 13.01.2011 12:18 incvizitor вне форума
incvizitor
 
Аватар для incvizitor
Понимаешь, есть люди которые делают ради того что бы сделать. Будет это рентабельно или нет, это их не интересует. У меня друг в Италии, в универе учиться, у них один препод из секвенции 10001110.... понимает что за прога перед ним. Вот какую из этого прибыль можно извлечь? Однако я ему (преподу) завидую и восхищаюсь его скилом.
Старый 13.01.2011 13:36 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Обычно речь идёт о здоровой выгоде. Фанатиков и Шелдонов везде хватает.
Старый 13.01.2011 14:12 Jarproger вне форума
Jarproger
 
Аватар для Jarproger
Действительно, AI не уместно

Но для оптимизации циклов асм шикарен
Старый 13.01.2011 15:44 incvizitor вне форума
incvizitor
 
Аватар для incvizitor
Psycho Tiger, сейчас дискуссия пойдёт в стороны того что такое "здоровая выгода", для чего кто занимаеться программированием и т.д. Поэтому если вдруг хочешь её продолжить пиши в личку/вконтакт.
Старый 13.01.2011 16:13 membrilius вне форума
membrilius
 
Аватар для membrilius
Цитата:
У меня друг в Италии, в универе учиться, у них один препод из секвенции 10001110.... понимает что за прога перед ним.
А у меня препод в институте мог компилировать в уме )
Старый 18.01.2011 13:21 Jarproger вне форума
Jarproger
 
Аватар для Jarproger
Я думал, АС один из самых высокоуровневых

Хотя сейчас есть флекс, он более "высокий"
Но такой жирный, особенно последний..
Старый 18.01.2011 15:11 alatar вне форума
alatar
 
Аватар для alatar
Вы путаете понятия язык, фреймворк и API плеера.
 

 


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


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