Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Управление в игре (http://www.flasher.ru/forum/showthread.php?t=197594)

YouRDooM 10.04.2013 00:00

Управление в игре
 
Всем добрый вечер!))
Я пробую сделать свою игрушку на флеш)) Пока пробую самыми глупыми способами)) Но всё только для пробы
и саморазвития =) На ActionScript 3.0 пока переходить не хочу) Для начала выучу ActionScript 2.0 :D
А теперь ближе к делу!

Я хочу чтобы при нажатии клавиши "Shift" скорость игрока увеличивалась (Это у меня получилось))
Но в чем проблема! Вернуть обратную скорость не могу(( Вот код далее пояснение ;D

Код AS1/AS2:

onClipEvent (enterFrame) {
        //**//Движение персонажа//**/
        if (Key.isDown(65)) {
                _root.player._x -= sh;
        }
        if (Key.isDown(68)) {
                _root.player._x += sh;
        }
        if (Key.isDown(87)) {
                _root.player._y -= sh;
        }
        if (Key.isDown(83)) {
                _root.player._y += sh;
        }
 
 
        if (Key.isDown(16)) {  // Вот собственно клавиша "Shift" при её нажатии переменная sh увеличивается до 10, но мне нужно чтобы при отпуске клавиши переменная снова равнялась 5.
                sh = 10;
        }




То есть я не знаю что можно использовать вместо isDown. Есть ли Обратная команда? В интернете не нашёл))
А "Листнеры" или как их там использовать пока не хочу в виду своих малых познаний xD))


За столь низкий, "нубский" "багаж" знаний прошу строго не судить!)) "Нуб, он и в Африке нуб" ))

dark256 10.04.2013 00:31

1. Измените название темы. Более внятно.
2. Для оформления кода есть соотв. тэги.
3. Читайте http://xitri.com/

Hauts 10.04.2013 09:04

YouRDooM, с таким подходом ничего хорошего не получится.

В вашем варианте при нажатии на кнопки вверх и вправо скорость игрока почти в полтора раза будет быстрее, чем просто при перемещении не по диагонали. Потому, что игрок будет идти по гипотенузе, а не по катетам.

По-хорошему нужно задавать скорость и направление игрока, а компоненты его смещения по осям высчитывать — те же косинус и синус угла в радианах. Но, я так чувствую, это для вас сложно и вам такого решения не нужно.

Поэтому:
Код AS1/AS2:

if (Key.isDown(16)) {
    sh = 10;
} else {
    sh = 5;
}

Ах да, нужна еще куча смайлов в коде, он так быстрее и правильнее будет работать.

Оффтоп:
dark256, я уж подумал, что модератором больше на форуме стало :D

dark256 10.04.2013 09:58

Нет нет нет! Не дай бог! Просто паттерны выражений модераторов втемяшились в серый процессор на уровне подсознательных шаблонов общения :)

caseyryan 10.04.2013 10:44

Цитата:

Для начала выучу ActionScript 2.0
Заведомо тупиковый путь развития :D
Уже об ас4 разговоры во всю прут, а тут ас2.. )

dark256 10.04.2013 13:38

В школах до сих пор Basic дают для начала, что ж теперь - не учиться? :)

YouRDooM 10.04.2013 16:11

Спасибо)))


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

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