#actionscript-3 #dynamic #movie #creation
#actionscript-3 #динамический #Фильм #создание
Вопрос:
У меня есть видеоролик, который мне нужно динамически дублировать на основе внешней переменной. например, clip1, clip2 и т. Д. Эта переменная изменяется, поэтому я не могу жестко указать, сколько раз это происходит.
Есть ли способ динамического создания этого видеоролика несколько раз и выравнивания его по экрану?
Я ничего не смог найти в Google..
С уважением Любен
Ответ №1:
Как насчет использования функции, которая дублирует DisplayObject. Эта функция возвращает новый экземпляр класса, которым является предоставленный объект:
function duplicateDisplayObject( dspObj:DisplayObject ):DisplayObject
{
var class_name:String = getQualifiedClassName( dspObj );
var definition:Class = getDefinitionByName( class_name ) as Class;
return new definition() as DisplayObject;
}
(MovieClip, Sprite и Bitmap наследуются от DisplayObject)
Редактировать:
Если вам нужно использовать его с MovieClips, вы можете просто:
var myDuplicate:MovieClip = duplicateDisplayObject( myOriginalMovieClip ) as MovieClip;
Комментарии:
1. Спасибо, Джулиан, именно то, что я искал — примечание, если я использую DisplayObject, я не могу использовать .gotoAndPlay(). Изменение его на MovieClip решает проблемы.
2. Это правда, но вам не нужно изменять функцию duplicateDisplayObject. Просто приведите возвращаемое значение, когда вы его используете. Смотрите мой пример выше.
3. Пожалуйста, обратите внимание, что вышеуказанная функция не работает для MovieClips в других MovieClips. Есть какие-нибудь идеи о том, как дублировать такие объекты?
Ответ №2:
var clip:YourClip;
for(var i:uint=0;i<5;i )
{
clip = new YourClip();
addChild(clip);
clip.x = 20 clip.width * i * 1.2;
clip.y = 20;
}
Ответ №3:
Вы не сможете просто скопировать экземпляр клипа. Однако вы можете создать экземпляр другого экземпляра этого класса, а затем изменить его положение.
var clip1:MyClip = new MyClip();
var copies:int = 10;
for(var i:int = 0, i < copies; i ) {
var clone:MyClip = new MyClip();
clone.name = 'clip' i
clone.x = ....;
clone.y = ....;
}