PDA

Просмотр полной версии : Имя мувиклипа


alex3dsflash
08.09.2011, 12:14
Доброго дня! Есть класс MyMovieClip;

Есть код:

var sdd=new MyMovieClip();
sdd.x=250;
sdd.y=250;
addChild(sdd);


КАК это дело засунуть в цикл,

for (i=1;i<100;i++){}

чтобы получилось 100 клипов (полноценных с новыми именами) :

sdd1,sdd2,sdd3, ........ sdd100

?????

Помогите пожалуйста!

ChuwY
08.09.2011, 12:47
var sdd2=new MyMovieClip();

sdd2 -- это имя переменной, в которой хранится ссылка на этот мувиклип. Это не имя клипа.
Имя клипа это sdd2.name .
Которое в данном случае пустое.

Вам никто не мешает обращаться к мувикам примерно так же, как вы и хотели.

var mc1 : MovieClip = new MovieClip();
var mc2 : MovieClip = new MovieClip();
var mc3 : MovieClip = new MovieClip();

for(var i : int = 1; i <= 3; i++){
var currMc : MovieClip = this["mc"+i];
}

alex3dsflash
08.09.2011, 12:50
Спасибо! Щас попробую!

Добавлено через 4 минуты
А... Понял. А тогда как в цикле создать динамично кучу переменных
mc1, mc2, mc3, итд?

BezDelnik
08.09.2011, 13:00
for(var i:int=0; i<3; i++) {
this['mc'+i] = new MovieClip();
}

-De-
08.09.2011, 13:01
Не обращайтесь к клипам по имени и только в крайних случаях при помощи чего-то типа this["mc"+i]; Это медленнее работает и иногда (это случится в самый неприятный момент, конечно) у вас может быть совпадение имён, что плохо ловится.
Делайте массив, складывайте туда.

var mcArray:Array = new Array();
for(var i : int = 1; i <= 3; i++){
var currMc : MovieClip = new MovieClip();
mcArray.push(currMc);
//тут можно сделать addChild(currMc);
}
Обращаться mcArray[i] - i-тый клип.

alex3dsflash
08.09.2011, 13:04
Спасибо огромное !!!

gloomyBrain
08.09.2011, 13:13
@BezDelnik Ваш способ будет работать только если класс объявлен как dynamic

alex3dsflash
08.09.2011, 13:28
for(var i:int=0; i<10; i++) {
this['mc'+i] = new MyMovieClip();
Null_mc.addChild(this['mc'+i]);
this['mc'+i].x=i*10;
trace(['mc'+i]);
}

mc9.addEventListener(MouseEvent.MOUSE_DOWN,Dragging);
function Dragging(event:Event){
mc9.startDrag(false, new Rectangle(-300, -300, 600, 600));
}



Предупреждение. Действия с кнопками или экземплярами объектов MovieClip не поддерживаются в ActionScript 3.0. Все сценарии, относящиеся к экземплярам объектов будут пропущены.

-De-
08.09.2011, 13:34
Не пишите в кадрах. Почитайте Мука или чо. Что-нибудь, как же программмировать блин на флэш. FAQ тутошний например.

alex3dsflash
08.09.2011, 13:37
А!!!!!!!!

Надо:

this.mc9.addEventListener(MouseEvent.MOUSE_DOWN,Dragging);
function Dragging(event:Event){
this.mc9.startDrag(false, new Rectangle(-300, -300, 600, 600));
}


Доперло!

Добавлено через 1 минуту
Мука читаю кажд день в метро. Просто c as2 на as3 перехожу с трудом..

Hidest
08.09.2011, 14:24
Скорее с AS1 тогда уже, иначе перешли бы гораздо легче.