![]() |
AS2: Получить (рекурсивный?) список мувиклипов с полным путем.
Здравствуйте!
Инструменты - mtasc, FDT. В целях облегчения отладки, хочу сделать себе такую функцию, которая бы выводила в trace информацию о всех существующих в данный момент клипах, начиная с _root, с полным путем. Пока что найденные решения (типа такого http://www.flasher.ru/forum/showthread.php?t=91727) не радуют, потому что - не показывают полного пути (чтобы виден был _root или там _level0) - показывают мувиклипы только текущего уровня. Если в мувиклипе содержится еще один мувиклип, внутри которого еще мувиклипы, то их не видно. (возможно я тут не прав, возможно я не вижу "внутреннего" мувиклипа потому что неправильно загружаю, но проверить не могу потому что нет функции отладки, о которой я как раз и говорю) В общем, нужен аналог списка мувиков (или даже всех объектов), который можно получить в Flash IDE через менюшку List Objects. Есть уже готовые наработки? |
такое сгодится?
Код:
function giperTrace(o){Код:
var _checked_:Object = {}; |
Нет, не работает оно как надо.
Вот код который у меня получился. Я подгружаю swf-файл, в котором есть три мувиклипа (для каждого мувиклипа прописаны LinkageID и заданы InstanceName). Код:
class Application Код:
Run main functionКод:
Level #0: Frame=1Поэтому вопрос - почему Flash при печати Object List видит мувики внутри swf-файла, а программно они недоступны? И как сделать чтоб они стали доступными, например, для копирования? Чтобы можно было копировать эти встроенные мувики через attachMovie() или там duplicateMovieClip()? Или это принципиально в AS2 невозможно? И единственный выход - помещать каждый мувик в отдельный SWF-файл? |
Функция рабочая (только добавьте проверку на нужные типы). Вы бы загрузки-то дождались, а потом и посмотрели, что у вас там.
|
Мда.. Еще бы еще ктонить рассказал, как делать проверку на загруженность в AS2 средствами mtasc онли. Или это есть зло?
В данный момент добавил пару методов Код:
public function checkLoaded(target_mc:MovieClip) Код:
scopeRef.createEmptyMovieClip("resource", dpt++);Код:
Run main functionПодозреваю, что назначить метод мувику нельзя потому, что функция onLoad() в моем коде является методом класса Application, который не является мувиклипом вообще. Но как по-другому назначить мувику onLoad-метод, сообразить не могу. PS: Размер загружаемого swf в байтах - 1087. А в логе пишется что загружается 1440 байт. Запуск swf обычный, локальный. Откуда берутся лишние байты в размере загружаемого файла? |
MovieClipLoader в помощь, без извращений и интервалами.
з.Ы. onLoad так не используется и работать не будет. з.Ы.Ы. Байты берутся из расжатого swf. |
Сделал через MovieClipLoader, но не хватает последнего штриха. А именно - не могу из onLoadInit() вызвать метод нужного мне объекта.
У меня есть инстанс объекта, который именуется appinst. У этого объекта есть метод onLoadResourceMovie(). Но когда я пытаюсь его вызвать из onLoadInit() моего листенера через команду appinst.onLoadResourceMovie(target_mc); то компиляция не проходит, и на этой строке мне выдается ошибка type error Unknown variable appinst Вот код двух моих классов, из которых и состоит проект. Код:
class Application Код:
class LoadListener {Посему тупой вопрос - как правильно вызвать метод одного объекта из другого? |
Я могу ошибаться, но
Код:
_checked_ = new Object();Код:
var _checked_:Object;Я честно говоря не понимаю, нафига вам вообще этот LoadListener отдельным классом. Дописать onLoadInit в базовый класс, добавить слушателем себя, добиться нормальной работы, а потом уже мудрить. |
Цитата:
Код:
public function giperTrace(o)Цитата:
Теперь метод giperTrace(), вызваный из onLoadResourceMovie(), показывает все мувиклипы. Код:
_level0Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
«Listener» — это просто объект с объявлеными методами-событиями, и не более того. Хелп флеша в изобилии набит этими листенерами, из-за чего в мозгу возникает стойкое убеждение, что для подписки на событие обязательно нужно создавать ещё один мусорный объект. А то, что можно подписать весь экземпляр текущего класса (методы-события должны быть объявлены, безусловно), как-то никто не догадывается. В общем, послушайте Kikasso. |
| Часовой пояс GMT +4, время: 15:08. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.