PDA

Просмотр полной версии : Обращение к объектам в библиотеке через массив


Dr_Bra
28.03.2018, 17:17
Всем доброго здоровья!

Подскажите, как грамотно написать обращение к классу объекта в библиотеке?
Есть Object_1. Мы его можем вызвать и добавить на сцену так:

object1 = new Object_1();
container.addChild(object1);

А как обратиться к этому объекту через динамическую переменную. Указав окончания "1" в квадратных скобках.

object1 = new (['Object_'+[1]]) as Objects;//чуш написал, не работает так. Но можно как-то исхитриться?

undefined
28.03.2018, 17:49
var i:uint=1;//номер класса.
var _class:Class=getDefinitionByName("Object_"+i);
if(_class)
this["object"+i]=new _class();//дальше обращаемся к экземпляру через this["object"+i]

Bletraut
28.03.2018, 18:05
var i:uint=1;//номер класса.
var _class:Class=getDefinitionByName("Object_"+i);
if(_class)
this["object"+i]=new _class();//дальше обращаемся к экземпляру через this["object"+i]


еще добавить
import flash.utils.*;

Dr_Bra
28.03.2018, 18:19
var i:uint=1;//номер класса.
var _class:Class=getDefinitionByName("Object_"+i);
if(_class)
this["object"+i]=new _class();//дальше обращаемся к экземпляру через this["object"+i]


Благодарю за подсказку. Пока не получилось, выдает ошибку. Где-то я не то пишу?


objectNum ++;
trace(objectNum);//выводит 1
var _class:Objects = getDefinitionByName("Object_"+[objectNum]);

this["object"+[objectNum]] = new _class();//дальше обращаемся к экземпляру через this["object"+objectNum]
container.addChild(this["object"+[objectNum]]);

Dr_Bra
28.03.2018, 18:31
objectNum ++;
trace(objectNum);//1 2 ...
var _class = getDefinitionByName("Object_"+objectNum);

this["object"+objectNum] = new _class();//дальше обращаемся к экземпляру через this["object"+objectNum]
container.addChild(this["object"+objectNum]);


Вот так ошибки не выдает, работает

Добавлено через 15 минут
Всем спасибО!

dark256
31.03.2018, 14:28
var objPool:Array = [];

objPool[1] = container.addChild( new Object_1() );
...
objPool[X] = container.addChild( new Object_X() );

/////////////

objPool[ n ].methodName( бла бла бла );

или

objPool[X] = container.addChild( new getDefinitionByName("Object_"+X) );