Просмотр полной версии : Приаттачить мувик, имя которого заранее неизвестно
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]);
}
2MerlinTwi, нет логики: если если имя мувика заранее не известно(и стало быть и сам мувик/класс не определен), как его можно пользовать?
ALiEN2006 прав: определи всех( не обязательно addChild(a[i])), а уж потом..
Пользователи 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
У меня такая же проблема.Перерыл хелп уже раз пять - ничего не нашел. Во всех имеющихся у меня примерах эта конструкция не используется. Сам уже неделю копаюсь(((
Люди вы что?
new smile2() это конструктор.
вообще если вы создаете объект динамически, можно вообще не создавать переменной
addChildAt(new MovieClip(),1);
//и доступ к объекту
getChildAt(1).doSomeMethod();
DarkLight
25.08.2006, 00:58
Люди вы что?
new smile2() это конструктор.
Да понятно что конструктор. А как сделать на ас3 аналог аттачМуви в цикле, где идентификатор исходного клипа генерируется как строчка?
а зачем нужны идентификаторы? запихни их на глубину, и по глубине определяй что надо, или создай массив
var myMovies:Array = new Array();
for ( var i:uint = 0;i<10;i++)
{
myMovies.push(new MovieClip());
}
и после по индексу определяй, хотя если ты не собираешь менять глубины, то через getChildAt легко можно манипулировать.
Ах блин вы о классах, все еще легче.
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());
}
учите мат часть
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, значит его можно таким способом добавить. Если нет, то нет :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.