![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 25
|
Постараюсь написать подробнее.
Есть игра в которой два уровня. Первый уровень в 1 кадре основной сцены, второй уровень во 2 кадре. Когда персонаж доходит до выхода на первом уровне, он переходит на второй кадр (gotoAndStop(2)) - второй уровень. В первом уровне все отлично, но как только переходи во второй уровень то в событии Event.ENTER_FRAME у какого либо класса участвующего в игре параметр (root as MovieClip) почему-то равено null через раз! То есть грубо говоря если сделать trace(root as MovieClip) то во втором уровне в консоле видно: [Object Engine] null [Object Engine] null [Object Engine] null Из-за этого валится куча ошибок во всех строках где участвует обращение к чему-либо через (root as MovieClip) во втором уровне. Пришлось в 10 местах кода вставлять подобное: if ((root as MovieClip) != null) { if (this.hitTestObject((root as MovieClip).exit)) { (root as MovieClip).ChangeLevel(2); } } Понятно что это не выход. Хочется понять почему "пляшет" root? Язык AS3, все по классам. Помогите пожалуйста, всю голову сломал уже. |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 25
|
А при чем здесь пропадение ссылки на root? ведь root есть в обоих кадрах, причем как я понимаю в каждом кадре он свой (в первом кадре на нем свои элементы расставлены, а во втором - свои).
Как решить проблему? |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 25
|
Но ведь у меня в обоих кадрах stop. Ведь раз я вижу уровень и все прорисовано и все работает, то root уже создался?)
Подскажите как мне выйти из этой ситуации! Добавлено через 2 минуты Вообще код написанный у меня в классе ОСНОВНОГО документа, в конструкторе, выполняется каждый кадр заново или только один раз при запуске swf? Как мне решить проблему? Если вместо кадров я буду подгружать мувики содержащие уровни - такой проблемы не будет? |
|
|||||
|
.
|
Возможно, у Вас существует два экземпляра того, у чего Вы проверяете root. Также возможно, что при переходе на второй кадр Вы забыли отписать первый экземпляр от Event.ENTER_FRAME. Т.е. когда нечто не находится в DisplayList, то и parent у него будет null.
Код DocumentClass'а выполняется один раз. Код в кадре - каждый раз при переходе playhead в этот кадр. |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:30. |
|
|
« Предыдущая тема | Следующая тема » |
|
|