Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Объявление переменной с неизвестным именем (AS3) Как? (http://www.flasher.ru/forum/showthread.php?t=136326)

MidnightOne 14.02.2010 20:15

Объявление переменной с неизвестным именем (AS3) Как?
 
В середине кода
Код AS3:

var i:int = 1;
this["variable" + i] = Math.Random(); * то же самое, что и * <b>variable1b> = Math.Random();

this["variable" + i] работает, и в данном случае присваивает значение от 0 до 1 переменной variable1.

Но как определять таким образом переменные?
Например мне надо задать 50 разных переменных (на самом деле ещё больше), причём их точное количество мне не известно.
Я думал что следующее прокатит:
Код AS3:

For (var i:int=1; i<51; i++)
{
 * var this["variable" + i]:int = Math.random();
 
}

Но не тут-то было... Хэлп.

inferrum 14.02.2010 20:19

Только в массиве имхо.

udaaff 14.02.2010 20:23

Ассоциативный массив в помощь.

MidnightOne 14.02.2010 20:23

PS: Все эти переменные - это инстансы мувиклипа, которые будут добавлены ЭддЧайлдом, а потом анимированы, причём у каждой из них своя траектория (собсно для этого и нужно чтоб они были с разными именами)

DarkLight 14.02.2010 20:24

Если действительно надо как свойства - используйте flash.utils.Proxy, если этот участок кода некритичен к производительности. Но на мой взгляд, достаточно массива.

MidnightOne 14.02.2010 20:57

Код AS3:

var array:Array;
 
for (var i:int=1; i<51; i++)
{
array[i] = new Box();
this.addChild(array[i]);
array[i].x = -50;
array[i].y = -50;
}
 
 
up();
function up ():void
{
        for (var i:int=1; i<51; i++)
{
        TweenLite.to(array[i], 1, {x:Math.random()*(stage.stageWidth-50)+20,
                                y:Math.random()*(stage.stageHeight-50)+20, ease:Bounce.easeOut,
                                rotation:Math.random()*300, onComplete:up});
}
}

Как заставить его воспринимать array[i] как объект ?
TweenLite.to(array[i], 1, {x:Math.random()*(stage.stageWidth-50)+20,
y:Math.random()*(stage.stageHeight-50)+20, ease:Bounce.easeOut,
rotation:Math.random()*300, onComplete:up});

UP:
Долго ржал, когда понял, что забыл в var array:Array; дописать = new Array;
В общем таким образом можно задать даже 1000 объектов, не объявляя их вручную, и всё будет работать.

Спасибо всем за советы!


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

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