Это последние две строки сценария действия для моего кадра:eventListeners не оставит
removeListeners();
if(!stage.hasEventListener(Event.ENTER_FRAME)){trace("STAGE HAS NO eventListeners");}
С removeListeners() функция было описано ранее, как:
function removeListeners(){
if(button){
button.removeEventListener(MouseEvent.CLICK,leaveGameScene);
}
stage.removeEventListener(Event.ENTER_FRAME,menuOnFrame);
stage.removeEventListener(Event.ENTER_FRAME,collectDrachmas);
stage.removeEventListener(Event.ENTER_FRAME,updateHealth);
stage.removeEventListener(Event.ENTER_FRAME,updateCards);
stage.removeEventListener(Event.ENTER_FRAME,updateQuestions);
stage.removeEventListener(Event.DEACTIVATE,stageDeactivate);
stage.removeEventListener(KeyboardEvent.KEY_DOWN,key_down);
stage.removeEventListener(KeyboardEvent.KEY_UP,key_up);
stage.removeEventListener(Event.ENTER_FRAME,charEnterFrame);
stage.removeEventListener(Event.ENTER_FRAME,updateInteractives);
stage.removeEventListener(Event.ENTER_FRAME,onFrameBadguy);
stage.removeEventListener(Event.ENTER_FRAME,onFrameStage);
stage.removeEventListener(Event.ENTER_FRAME,updateConversations);
stage.removeEventListener(Event.ENTER_FRAME,updatePit);
//etc etc etc
}
Таким образом, тщательно удаляя любые возможные существующие eventListeners, которые происходят во всем моем проекте. Мы знаем, что никакие eventListeners не добавляются несколько раз из-за причины, приведенной ниже, и потому что все существующие eventListeners завершаются этим кодом после выхода из фрейма.
Все eventListeners через мой проект просто объявляются и не добавляются в других функций или что-нибудь подобное (бывший показано ниже), таким образом устраняя возможность этой проблемы, возникающей из наличия кратных одного и того же eventListeners:
stage.addEventListener(Event.ENTER_FRAME,updateHealth);
Когда последние две строки сценария действий для моего кадра выполняется, Flash действует так, как будто там нет абсолютно никаких ENTER_FRAME eventListeners на сцене, калька упорно что
"STAGE HAS NO eventListeners"
соответственно. Однако после запуска кода в этом фрейме запускаются несколько event_FRAME eventListeners этапа, которые были объявлены в предыдущем кадре (это вызывает несколько ошибок, поскольку в настоящее время вызываются нулевые объекты)! Похоже, что eventListener не появляется ни от чего, ни от причины. Как это может быть возможным? Что может быть причиной этой проблемы?
Возможно, я должен упомянуть, что я использовал тот же метод с помощью кнопки, чтобы перейти к этому кадру без проблем. Оба пути заканчиваются:
removeListeners();
gotoAndPlay(1,"Menu");
Update
Вот ошибки, данные:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/collectDrachmas()[_109_fla.MainTimeline::frame1:369]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/updateHealth()[_109_fla.MainTimeline::frame1:417]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/updateQuestions()[_109_fla.MainTimeline::frame1:592]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/updateCards()[_109_fla.MainTimeline::frame1:810]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/charEnterFrame()[_109_fla.MainTimeline::frame1:978]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/updateInteractives()[_109_fla.MainTimeline::frame1:1892]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/onFrameBadguy()[_109_fla.MainTimeline::frame1:2015]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/onFrameStage()[_109_fla.MainTimeline::frame1:2638]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/updateConversations()[_109_fla.MainTimeline::frame1:2760]
Эти ошибки возникают из-за следующих eventListeners в своих соответствующих функций:
function collectDrachmas(e:Event)
function updateHealth(e:Event)
function updateCards(e:Event)
function charEnterFrame(e:Event)
function updateInteractives(e:Event)
function onFrameBadguy(e:Event)
function onFrameStage(e:Event)
function updateConversations(e:Event)
Можете ли вы поделиться своей флорой, что было бы проще всего выяснить, что происходит. Я могу сказать вам, что было бы намного лучше, если бы один унифицированный прослушиватель ENTER_FRAME вместо дюжины или около того у вас был. – BadFeelingAboutThis
OMG, почему вы добавляете так много слушателей? Вы должны сгруппировать всех этих обработчиков ENTER_FRAME в один. – null
Должен ли я? Я объединю их все вместе и посмотрю, если это упростит ситуацию до – DrakeTruber