Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как заполучить клипы на сцене (http://www.flasher.ru/forum/showthread.php?t=172528)

mumnel 12.12.2011 05:36

как заполучить клипы на сцене
 
Добрый день.
Подскажите пожалуйста, как решить следующую задачку:

На сцене (во fla-файле) размещены несколько клипов
с именами mc0, mc1, mc2 и т д mc100 - все они разные

в связанном с данной сценой as-файле, очень хочеться заполучить эти клипы причём АВТОМАТИЧЕСКИ заполучить,
например в цикле пробовал вот так:
mcArray[i] = 'mc'+i
Но увы не работает.

Подскажите пожалуйста))
Заранее спасибо

ChuwY 12.12.2011 06:14

Код AS3:

mcArray[i] = [контейнер клипов].getChildByName("mc"+i) as MovieClip;


mumnel 12.12.2011 08:04

Цитата:

Сообщение от ChuwY (Сообщение 1050916)
Код AS3:

mcArray[i] = [контейнер клипов].getChildByName("mc"+i) as MovieClip;


Спасибо. Всё супер :)

Добавлено через 9 минут
А можно как-нить определить сколько их там всего штук на сцене во fla-файле?
Шоб задать чему равно N в цикле. :)

Код AS3:

for (var i:int = 0; i < N; i++) 
{
mcArray[i] = getChildByName("mc"+i) as MovieClip;
}


goodguy 12.12.2011 09:03

Если там кроме них ничего нет, то
Код AS3:

stage.numChildren;


mumnel 12.12.2011 09:49

trace(stage.numChildren) //выдаёт 1, хотя на сцене их свыше 100

samana 12.12.2011 10:04

Цитата:

Сообщение от mumnel (Сообщение 1050930)
trace(stage.numChildren) //выдаёт 1, хотя на сцене их свыше 100

А разве ваши клипы лежат в stage? Клипы лежат на сцене, а сцена уже в stage. Попробуйте:
Код AS3:

trace(this.numChildren)

p.s. Не забывайте, что метод numChildren не считает вложенные объекты.

goodguy 12.12.2011 10:05

значит они не на сцене
А что покажет?
Код AS3:

if (stage.getChildAt(0) is flash.display.DisplayObjectContainer) {
        var cont:flash.display.DisplayObjectContainer = stage.getChildAt(0) as flash.display.DisplayObjectContainer;
        trace(cont.numChildren);
}

Цитата:

Клипы лежат на сцене, а сцена уже в stage
А stage != сцена? )

Сорее они лежат просто в дочернем контейнере (который не является сценой), который уже лежит на сцене

samana 12.12.2011 10:09

Цитата:

Сообщение от goodguy
А stage != сцена? )

Может stage тоже называют сценой, но я всегда думал, что сцена это MainTimeline, root1,2,3....

mumnel 12.12.2011 10:09

Ок. Теперь работает, Thanks ;)
trace(this.numChildren) // 121

Добавлено через 3 минуты
Цитата:

Сообщение от goodguy (Сообщение 1050934)
значит они не на сцене
А что покажет?
Код AS3:

if (stage.getChildAt(0) is flash.display.DisplayObjectContainer) {
        var cont:flash.display.DisplayObjectContainer = stage.getChildAt(0) as flash.display.DisplayObjectContainer;
        trace(cont.numChildren);
}


Данный код, также выдаёт верный результат

goodguy 12.12.2011 11:18

Цитата:

Данный код, также выдаёт верный результат
Ну, это содержимое экземпляра документ класса. Который при работе фо флеш иде представлен мувиклипом, или спрайтом (по умолчанию) при работе в нормальных редакторах кода.
Собственно, код, который предложил samana делает то же самое, только без проверки, является ли объект контейнером


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

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