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

neonoviiwolf 03.10.2015 20:39

как пропустить один кадр?
 
Добрый день!

Вопрос, у меня идёт сценарий:
1) в начале я создаю слушатели MouseEvent.CLICK для кнопки Start
2) кнопка start удаляется, начинается игра, которая в начале требует выбрать силу удара
3) создаю 2 слушателя, один на кнопку "пробел" второй MouseEvent.CLICK

в итоге все это происходит в одном кадре и при нажатии кнопки старт, создаваемый в последующем слушатель для силы удара тоже срабатывает

приходиться делать костыль, который считает 1) либо кадры, что бы новый слушатель создавался в след кадре 2) либо счётчик нажатий на кнопку мыши

мне это кажется неправильным, есть ли уже нормальное/встроенное решение или этот единственный вариант?

caseyryan 03.10.2015 21:45

Нормальное решение - отказаться от кадров вообще. И писать код только в классах.

neonoviiwolf 04.10.2015 00:40

Цитата:

Сообщение от caseyryan (Сообщение 1187659)
Нормальное решение - отказаться от кадров вообще. И писать код только в классах.

не, неправильно поняли, код в классах весь

Код AS3:

                        startMenu.getStartButton.addEventListener(MouseEvent.CLICK, clickStartMenu);
                }
 
                private function clickStartMenu(e:MouseEvent):void
                {
                        startMenu.getStartButton.removeEventListener(MouseEvent.CLICK, clickStartMenu);
                        removeChild(startMenu);
                        cat.visible = true;
                        addChild(pointerAndRoundSpeed);
                        this.addEventListener(MouseEvent.CLICK, getPointerSpeed); //этот слушатель должен добавиться в следующем кадре
                }
 
                private function getPointerSpeed(e:MouseEvent):void
                {
                        this.removeEventListener(MouseEvent.CLICK, getPointerSpeed);
                        var _startSpeed:Number = pointerAndRoundSpeed.getPointer;
                }


caseyryan 04.10.2015 09:27

Зачем там каждый раз разные слушатели добавляются?
Можно добавить слушатель где-то вначале и просто проверять e.target
Код AS3:

if (e.target == startMenu) {
  // обработка стартового меню
} else {
  // все остальное
}

А добавление где-то в следующем кадре - это какой-то дикий костыль

neonoviiwolf 04.10.2015 16:41

спасибо, чёт раньше я этим ни разу не пользовался
я потому и задал вопрос, т.к. сам считал, что это бред=)


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

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