Цитата:
|
Сообщение от Kikasso
Я могу ошибаться, но
_checked_ = new Object();
надо писать внутри конструктора, а в шапке класса только объявить его тип:
var _checked_:Object;
|
Да, вы совершенно правы. Кроме того, метод giperTrace() пришлось доработать, так как воспользоваться им можно было только один раз. При следующем вызове этого метода, в объекте _checked_ уже отмечено, что данный мувик был обработан, и его имя повторно не выводится в лог. Я внес те исправления что выше написаны и сделал из одного метода giperTrace() два вот таких

Код:
public function giperTrace(o)
{
delete _checked_;
_checked_ = new Object();
giperTraceRecurse(o);
}
public function giperTraceRecurse(o)
{
if(typeof(o)!='movieclip' || _checked_[o._target] ) return;
trace(o);
_checked_[o._target] = true;
for( var p in o )
giperTrace ( o[p]);
}
Теперь вызов giperTrace() всегда работает как надо. Не знаю, красивое ли решение (может можно как-то очищать объекты, а не удалять и заводить новые), но оно работает.
Цитата:
|
Сообщение от Kikasso
appinst в вашем втором классе не значится. Передавайте параметр при иннициации, вы же scoope передаете в конструктор первому классу.
|
Да, спасибо за подсказку. Почему-то думал, что флеш хранит список инстансов, и к ним можно просто обращаться. А оказывается ООП во флеше почти такое же низкоуровневое как в сиплюсплюсе. Сделал с передачей параметра appinst, и вызов appinst.onLoadResourceMovie() заработал.
Теперь метод giperTrace(), вызваный из onLoadResourceMovie(), показывает все мувиклипы.

Код:
_level0
_level0.resource
_level0.resource.mcCellBall
_level0.resource.mcCellEnemyPlayer
_level0.resource.mcCellCommandPlayer
Цитата:
|
Сообщение от Kikasso
Я честно говоря не понимаю, нафига вам вообще этот LoadListener отдельным классом. Дописать onLoadInit в базовый класс, добавить слушателем себя, добиться нормальной работы, а потом уже мудрить.
|
Отдельным классом - это задел на будущее. Да и по логике вещей, листенеры - это вещь в себе, т.е. это такие объекты, которые не входят в состав других объектов. А значит это отдельный класс.