PDA

Просмотр полной версии : Приаттачить мувик, имя которого заранее неизвестно


MerlinTwi
24.08.2006, 16:03
Чтобы добавить мувик (допустим icon_mc), надо сделать примерно так:
var m:MovieClip = new icon_mc();
addChild(m);

А если имя мувика заранее не известно? Или нужно приаттачить сотню клипов "mc1", "mc2", ... "mc100" ?
Вариант:
var txt:String = "icon_mc";
var m:MovieClip = new(txt);
addChild(m);
Не работает... :(
Наверняка это делается просто, но как? я пока в хэлпе ничего не нашел...

ALiEN2006
24.08.2006, 18:07
Попробуй так:

a = new Array();

for(var i = 0; i< 10; i++){

a[i] = new MovieClip();
addChild(a[i]);

}

silin
24.08.2006, 18:52
2MerlinTwi, нет логики: если если имя мувика заранее не известно(и стало быть и сам мувик/класс не определен), как его можно пользовать?
ALiEN2006 прав: определи всех( не обязательно addChild(a[i])), а уж потом..

Nirth
24.08.2006, 20:51
Пользователи Alien2006 и MerlinTwi получают устное предупреждение за не использование тэгов code

MerlinTwi
24.08.2006, 21:49
Nirth понял, исправлюсь :)

ALiEN2006 это немного не то. Я навенорное не точно сформулировал задачу. Допустим, есть в library 100 разных мувиков, к примеру, смайлики. Нужно их все отобразить... Садимся и 10 минут кликаем мышкой во Flash редакторе задавая им export for ActionScript и имена smile1, smile2 ... smile100
Теперь вопрос, как в скрипте их всех приаттачить? Не писать же
var m:MovieClip;
m = new smile1();
addChild(m);
m = new smile2();
addChild(m);
. . .
m = new smile100();
addChild(m);

ALiEN2006
24.08.2006, 23:06
Да, я понял суть вопроса, раньше с attachMovie - можно было имя генерить на ходу (имя мувика который будем аттачить из библиотеки), как это сделать сейчас - не понятно.

По идее должна быть конструкция вида m = new "smile"+i(); где i от 0 до 100.

Но это не работает =)

DarkLight
24.08.2006, 23:48
У меня такая же проблема.Перерыл хелп уже раз пять - ничего не нашел. Во всех имеющихся у меня примерах эта конструкция не используется. Сам уже неделю копаюсь(((

Nirth
25.08.2006, 00:56
Люди вы что?
new smile2() это конструктор.

Nirth
25.08.2006, 00:58
вообще если вы создаете объект динамически, можно вообще не создавать переменной


addChildAt(new MovieClip(),1);
//и доступ к объекту
getChildAt(1).doSomeMethod();

DarkLight
25.08.2006, 00:58
Люди вы что?
new smile2() это конструктор.
Да понятно что конструктор. А как сделать на ас3 аналог аттачМуви в цикле, где идентификатор исходного клипа генерируется как строчка?

Nirth
25.08.2006, 01:05
а зачем нужны идентификаторы? запихни их на глубину, и по глубине определяй что надо, или создай массив

var myMovies:Array = new Array();
for ( var i:uint = 0;i<10;i++)
{
myMovies.push(new MovieClip());
}


и после по индексу определяй, хотя если ты не собираешь менять глубины, то через getChildAt легко можно манипулировать.

Nirth
25.08.2006, 01:19
Ах блин вы о классах, все еще легче.


var prefix:String = "smile";
var length:uint = 100;

for ( var i:uint = 0; i < length ; i++ )
{
var smileClass:Class = flash.utils.getDefinitionByName(prefix+i.toString());
addChild(new smileClass());
}

учите мат часть

etc
25.08.2006, 01:52
Nirth, скобочки забыл

Nirth
25.08.2006, 02:01
а где если не секрет?

DarkLight
25.08.2006, 02:05
flash.utils.getDefinitionByName - это то что долго искал...Торможу...
Nirth, спасибо!

MerlinTwi
25.08.2006, 02:26
Nirth вот то что надо. спасибо! :umnik2:

MerlinTwi
09.11.2006, 13:00
Не понял, что значит "класс не статик"?
Если у мувиклипа в библиотеке стоит Export for ActionScript, значит его можно таким способом добавить. Если нет, то нет :)