Показать сообщение отдельно
Старый 07.07.2007, 03:33
xintrea вне форума Посмотреть профиль Отправить личное сообщение для xintrea Посетить домашнюю страницу xintrea Найти все сообщения от xintrea
  № 9  
Ответить с цитированием
xintrea
 
Аватар для xintrea

Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
Цитата:
Сообщение от 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 в базовый класс, добавить слушателем себя, добиться нормальной работы, а потом уже мудрить.
Отдельным классом - это задел на будущее. Да и по логике вещей, листенеры - это вещь в себе, т.е. это такие объекты, которые не входят в состав других объектов. А значит это отдельный класс.
__________________
Со всяческими пожеланиями, Xintrea.
https://webhamster.ru