Форум 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=136228)

CHLameR 12.02.2010 13:06

Создание игровой паузы - проблема с условием
 
При создании паузы я делаю условие - если переменная паузы равна 0 и нажат пробел - значит пауза включается (то есть в первую очередь меняется кадр в мувиклипе, потом все остальное...) А если переменная равна 1 и нажат пробел - пауза отключается.

Код AS1/AS2:

_global.pausa=0;
 
if (Key.isDown(Key.SPACE) && _global.pausa==0) { ingame_menu.gotoAndStop(2);
_global.pausa++;}
 
if (Key.isDown(Key.SPACE) && _global.pausa==1) { ingame_menu.gotoAndStop(1);
_global.pausa--; }

ПОмогите, пожалуйста, мой код совсем не работает и не пойму почему :(

mooncar 12.02.2010 13:10

Потому что проверку на нажатие нужно делать непрерывно, например через слушателя клавиатуры. Либо через onEnterFrame. Либо через setInterval.
А у вас только разовая проверка при первоначальном выполнении кода.

Вот пример из хелпа:
Код AS1/AS2:

car_mc.onEnterFrame = function() {
 if (Key.isDown(Key.RIGHT)) {
 this._x += 10;
 } else if (Key.isDown(Key.LEFT)) {
 this._x -= 10;
 }
};

Не ленитесь туда смотреть.

Вот как у вас нужно сделать со слушателем:
Код AS1/AS2:

_global.pausa = 0;
 
var listener:Object = new Object ();
 
listener.onKeyDown = function () {
        if (Key.isDown(Key.SPACE) && _global.pausa == 0) {
                ingame_menu.gotoAndStop(2);
                _global.pausa++;
        }
 
        if (Key.isDown(Key.SPACE) && _global.pausa == 1) {
                ingame_menu.gotoAndStop(1);
                _global.pausa--;
        }
}
 
Key.addListener(listener);


CHLameR 12.02.2010 13:51

Спасибо ;) Но не получается пока, к сожалению - просто при нажатии клавиши ничего не происходит. Ломаю голову, почему.

Код AS1/AS2:

var listener:Object = new Object (); 
listener.onKeyDown = function () {
        if (Key.isDown(Key.SPACE) && _global.pausa == 0){
                ingame_menu.gotoAndPlay(2);
                _global.pausa++;
        }
}
Key.addListener(listener);

Когда только для включения паузы - все работает. Но не происходит ничего, если добавлять строки:
Код AS1/AS2:

if (Key.isDown(Key.SPACE) && _global.pausa == 1) { 
                ingame_menu.gotoAndStop(1);
                _global.pausa--;
        }

Заметил странный момент - если я ставлю вместо пробела во второй раз другую кнопку любую - то все работает, как и должно. То есть включение паузы с пробелом, а выключение с шифтом работает. Но на одной клавише - нет. :(

udaaff 12.02.2010 14:00

Переменную пауза логично было бы сделать Boolean.

CHLameR 12.02.2010 14:54

Всем большое спасибо, разобрался в проблеме.


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

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