Форум 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=167138)

alex3dsflash 08.09.2011 12:14

Имя мувиклипа
 
Доброго дня! Есть класс MyMovieClip;

Есть код:

Код AS3:

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

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

Код AS3:

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

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

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

?????

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

ChuwY 08.09.2011 12:47

Код AS3:

var sdd2=new MyMovieClip();

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

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

Код AS3:

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

Код AS3:

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


-De- 08.09.2011 13:01

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

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

Код AS3:

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

А!!!!!!!!

Надо:

Код AS3:

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 перехожу с трудом..


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

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