PDA

Просмотр полной версии : как пропустить один кадр?


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
Нормальное решение - отказаться от кадров вообще. И писать код только в классах.

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


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
if (e.target == startMenu) {
// обработка стартового меню
} else {
// все остальное
}



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

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