PDA

Просмотр полной версии : проблема с _root в классах внешнего клипа, подгруженного методом LoadMovieNum


Annihilator
14.03.2007, 12:54
Столкнулся со следующей странностью в цепочке видимости внутри классов.
Есть основное приложение игры и есть редактор уровней. Как отдельный swf редактор работает правильно, но мне надо его подгружать в игру. На его основной шкале указано this._lockroot = true; в игре подгружаю его стандартно: loadMovieNum("inner_map-editor.swf",1).
В коде редактора _root теперь ссылается на _level1, как и должно быть. А вот в классах, которые используются в редакторе, _root по-прежнему ведет на _level0, что естесственно не правильно (при чем большинство этих классов используются только в редакторе, а не в основной игре).

Почему так происходит и как это исправить?

etc
14.03.2007, 12:55
Потому что классы в _global находятся.
Про _root надо вообще забыть, как и про loadMovieNum.

Annihilator
14.03.2007, 13:11
А каким же еще методом подгружать внешний клип на отдельный уровень?
То есть мне надо что-бы это было полностью независимое приложение внутри основного.

etc
14.03.2007, 13:31
А каким же еще методом подгружать внешний клип на отдельный уровень?
Если забыть про _root, то и отдельного уровня не понадобится. Главное не перекрывать классы в родительском клипе по именам. И все будет прекрасно работать. Если прямо так нужна ссылка на рут клипа, то надо использовать для этого статическое свойство класса. Это будет более корректно.

Annihilator
14.03.2007, 14:01
Спасибо, я именно так и догадался. Просто вместо _root сделал свойство __root, которое при инициализации объекта и делаю ссылкой на реальный _root. =8)

Хотя понимаю, что все это конечно не по ООП-шному, но у меня есть много функций на руте, которые нельзя отнести к какому-то конкретному классу, поэтому приходится обращаться из классов к _root. ...или может сделать эти функции глобальными?...

etc
14.03.2007, 14:35
Использовать статические свойства классов.