|
|
|||||
Как получить список всех клипов?
Привет!
Подскажите, как можно получить список или массив имен всех MovieClip определенного пользовательского класса (например, Ball), которые в данный момент находятся на сцене? Что-то наподобии: но, желательно и вложеных в другие мувик. Спасибо. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Рекурсией, конечно.
|
|
|||||
подсказка: функции.
__________________
I'm only happy when it rains. Waka Laka |
|
|||||
Но, приведеный мною код выводит общее название класса: объект, стринг и тд..
Мне надо примерно так: на сцене в данный момент есть клип myBall1 (просто клип) и myBall2 (объкт класса Ball наследник мувиклипа). Вывести надо: myBall2 |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
function getNames(root) { for (var i in root) { var item = root[i]; if (typeof item == 'movieclip') { getClassName(item, _global); trace('[object '+(__currentClassName ? __currentClassName : 'MovieClip')+', path='+item+']'); delete __currentClassName; getNames(item); } } } function getClassName(mc, scope) { for (var i in scope) { var item = scope[i]; if (typeof item == 'function' && mc.__proto__ == item.prototype) { __currentClassName = i; return; } else if (typeof item == 'object') { getClassName(mc, item); } } } onEnterFrame = function() { getNames(this); delete onEnterFrame; } Цитата:
|
|
|||||
Привет!
__etc код как всегда великолепен. Спасибо. Однако моя проблема не разрешилась. Попрбую еще раз сформулировать. В фильме участвует постоянно меняющее кол-во клипов (класса MovieClip) и экземпляров класса Ball (тоже клипов, так как изначально определены как class Ball extends MovieClip) В любой момент времени мне надо обратиться ко всем экземплярам Ball, а не ко всем MovieClip. Ваш код выдает: [object MovieClip, path=_level0.myBall2] [object MovieClip, path=_level0.myBall1] [object MovieClip, path=_level0.myBall1.myBall3] [object MovieClip, path=_level0.main_mc] [object MovieClip, path=_level0.main_mc.myBall4] [object MovieClip, path=_level0.main_mc.myBall4.myBall3] [object MovieClip, path=_level0.main_mc.box_mc] Как в известном выражении: мухи и котлеты по отдельности, хотя и те и другие мясо. Еще раз благодарю за попытку помочь. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Так, а вот так:
function getNames(root) { for (var i in root) { var item = root[i]; if (typeof item == 'movieclip') { getClassName(item, _global); trace('[object '+(__currentClassName ? __currentClassName : 'MovieClip')+', path='+item+']'); delete __currentClassName; getNames(item); } } } function getClassName(mc, scope) { for (var i in scope) { var item = scope[i]; if (typeof item == 'function' && mc.__proto__ == item.prototype) { __currentClassName = i; return; } else if (typeof item == 'object') { getClassName(mc, item); } } } onLoad = function() { getNames(this); } |
|
|||||
К сожалению тот же результат.
Проблему можно решить по другому, но у меня нет (пока!) опыта работать с классами. Если б я смог передать в класс событие "нажатие кнопки на руте" или нажатие мышки в определенной области рута, то не потребывалось бы оттделять "мух от котлет". А так засел за англо-русский словарь и пытаюсь перевести из ХЭЛПа что есть addEventListener, broadcast, EventDispatcher, и как они могут мне помочь. Нашел в EventDispatcher.addEventListener() такой код: myListener = new Object(); myListener.click = function(evt){ trace(evt.type + " triggered"); } myButton.addEventListener("click", myListener); В догонку к написаному: Первый код отлично подошел для другой задачи: останока/пуск всех мувиков (включая вложеных) в данный момент времени!!! Последний раз редактировалось Жень Шень; 10.08.2007 в 17:16. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
|
|
|||||
Привет!
__etc, спасибо за ссылку, сижу разбираю...и возникли 2 "непонятки". 1. В примерах (по вышепреведенной ссылке) в классе есть такая строка в конструкторе: Но класс EventDispatcher согласно просмотренному хэлпу не имеет метода initialize(), и в объявленых методах его нет. Как происходит инициализация? 2. Непонятен (для меня) синтаксис таких строк в части параметра (передаваемые параметры заключены в фигурные скобки): Предпологаю, что это передача объектов с определенными свойствами. Так ли это? Спасибо. ЗЫ И, последнее. Это относится к теме топика. Чисто теоретически хочется удовлетвориться, как все-таки получить список любого пользовательского класса, а не список классов верхнего уровня. Повторюсь, для решения своей проблемы я попытаюсь использовать событие кнопки и обработка его в моем классе. |
Часовой пояс GMT +4, время: 16:57. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|