Есть ли лучший способ настроить флеш-проект с большим количеством навигации, чем это нужно?:
bottomNav.contact_btn.addEventListener(MouseEvent.CLICK, changeContent);
bottomNav.portfolio_btn.addEventListener(MouseEvent.CLICK, changeContent);
bottomNav.news_btn.addEventListener(MouseEvent.CLICK, changeContent);
bottomNav.inspiration_btn.addEventListener(MouseEvent.CLICK, changeContent);
bottomNav.home_btn.addEventListener(MouseEvent.CLICK, changeContent);
secondaryNav.about_btn.addEventListener(MouseEvent.CLICK, changeContent);
secondaryNav.services_btn.addEventListener(MouseEvent.CLICK, changeContent);
secondaryNav.home_btn.addEventListener(MouseEvent.CLICK, changeContent);
secondaryNav.inspiration_btn.addEventListener(MouseEvent.CLICK, changeContent);
secondaryNav.inspiration_archive_btn.addEventListener(MouseEvent.CLICK, changeContent);
secondaryNav.portfolio_showcase_btn.addEventListener(MouseEvent.CLICK, changeContent);
secondaryNav.portfolio_archive_btn.addEventListener(MouseEvent.CLICK, changeContent);
и если нет, то между моментами анимации всегда бывают моменты, когда последнее, что вы хотите сделать, - это чтобы кто-то нажал кнопку и включил другую функцию в середине вашей красивой очистки между двумя сценами. Вы заканчиваете (или по крайней мере я делаю) бесчисленные ошибки и разозлили клиента.
Что вы делаете, чтобы приостановить всех этих слушателей, не добавляя функцию в конец каждой другой функции, чтобы временно отключить их?
Пожалуйста, если у кого-то есть магическая практика, я бы хотел ее услышать.
относительно того, как я это делаю, я писал что-то вроде этого:
function suspendBtns():void
{
secondaryNav.inspiration_archive_btn.removeEventListener(MouseEvent.CLICK, changeContent);
secondaryNav.portfolio_showcase_btn.removeEventListener(MouseEvent.CLICK, changeContent);
secondaryNav.portfolio_archive_btn.removeEventListener(MouseEvent.CLICK, changeContent);
}
и добавит suspendBtns()
; до конца каждой функции, которая будет переходить между клипами.
тогда, очевидно, другая функция с именем enactBtns()
или что-то в этом роде.
Я пытался один раз просто добавить одного слушателя событий на сцену:
stage.addEventListner(MouseEvent.CLICK, doFunction);
и тогда функция найдет имя btn, например:
function doFunction(e:Event):void{
switch(e.target.name){
case"home_btn":
doThis();
break;
case"away_btn":
doThat();
break;
}
}
и так далее. Это не сработало так хорошо, как будто мне нужно было нажать каждую кнопку дважды, чтобы она заработала.
И мне все еще пришлось приостановить прослушиватель событий между действиями.