Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Можно ли получить список потомков movie clip? (http://www.flasher.ru/forum/showthread.php?t=81358)

Bорон 17.06.2006 18:51

Можно ли получить список потомков movie clip?
 
Доброго времени суток.
Есть небольшой анимационный ролик.
Куча разных мелких зацикленных анимашек.
Нужно что бы по клику на кнопку "стоп" вся анимация ролика останавливалась.
Ну, и соответственно по нажатию на кнопку "старт" запускалась.
Так как анимашек много и в них есть вложенные анимашки в которые вложены другие анимашки, то руками последовательно останавливать все мувики это весьма неблагодарная и тяжолая работа.
Хотел написать функцию, которая будет при указании объекта останавливать его и всех его потомков.
Но не могу сообразить - как получить список потомков класа MovieClip данного обьекта ?

Это возможно ?

Сразу отмечу, что имена клипов не однородны.
Очень надеюсь на вашу помощь.

С уважением. Ворон.

Techmaker 17.06.2006 19:35

Цитата:

Сообщение от Bорон
Это возможно ?

если все потомки точно проигрываются (play())
если нет то нет, так как отследить проигрывается или нет нельзя.

ЗЫ: если клипов очень много - будет небольшой стопор, на маломощных компах может подвиснуть (от такого стопа и старта)

я уже пробовал такое делать.

если хочешь могу сделать пример перелистывания всех потомков.

Bорон 17.06.2006 20:15

Цитата:

Если все потомки точно проигрываются (play())
если нет то нет, так как отследить проигрывается или нет нельзя.
Бррр... Ничего не понял...
Ты имееешь в виду определение проигрывается ли ролик или нет ?
Такой задачи просто не стоит.
(Хотя при каждом "стоп" и "пуск" можно менять переменную состояния объекта)
При нажатии "стоп" к каждому потомку класса movie clip применяется метод stop().
Только хотелось бы определять, что из них Movieclip, что бы применить к нему функцию рекурсивно.
Подскажешь, как это сделать ?

Цитата:

ЗЫ: если клипов очень много - будет небольшой стопор, на маломощных компах может подвиснуть (от такого стопа и старта)
Врядли... У меня все же не настолько МНОГО объектов.

Цитата:

если хочешь могу сделать пример перелистывания всех потомков.
Очень хочу.
Поооожжжжаааалуста !

Буньков Максим 17.06.2006 20:20

Рекурсивно перечиляй for in и скань на tуpeof

Bорон 17.06.2006 20:38

Спасибо !
Сейчас буду пробовать.

Bорон 17.06.2006 21:56

Урааааааа!
Все получилось !

Спасибо всем еще раз !

iNils 17.06.2006 22:10

Вложений: 1
Вот еще один вариант, но с ограничением. Не работает для того мувиклипа, для которого в том же кадре где он появляется навесить onEnterFrame (в примере это демонстрирует самый левый синий круг).

Спасибо Nirth'у за помощь :)

Techmaker 18.06.2006 10:14

Вложений: 1
Цитата:

Сообщение от Bорон
Очень хочу.
Поооожжжжаааалуста !

Цитата:

Сообщение от iNils
Вот еще один вариант, но ограничением. Не работает для того мувиклипа, дл якоторого в том же кадре где он появляется навесить onEnterFrame (в примере это демонстрирует самый левый синий круг).

Спасибо Nirth'у за помощь :)

хъ
немного переделал модифицировал твой пример =)
убрар прототипы и onEnterFrame теперь можно использовать

сделал регистрацию обьектов с возможностью исключения и setInterval'ом у каждого.

7thsky™ 18.06.2006 11:34

Техмайкер я бы так сделал бы (а то можно рекурсией убить все скрипты)

Код:

_global.findAllInMcAndRegister = function (mc) {
        // функция поиска всех обьектов в любом обьекте
        for (var i in mc) {
                if (typeof (mc[i]) == "movieclip" && mc [i]._name == i && mc[i]._parent == mc) {
                        // проверяем что обьект - мувиклип
                        registerMcInterval (mc[i]);
                        // создаём для него интервал
                        findAllInMcAndRegister (mc[i]);
                        // ищем в нём обьекты
                }
        }
};


iNils 18.06.2006 11:57

2Techmaker : тоже вариант :) но и него тоже есть минус, если объект появляется на сцене кадрами позднее, то он не будет автоматически зарегистрирован, следовательно опять надо вызывать функцию регистрации. В первом способе это происходило автоматически (вот только onEnterFrame собственный всю малину портил :)). Все таки хотелось чтобы объект сам себя регистировал без лишнего кода.:umnik2:


Часовой пояс GMT +4, время: 08:49.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.