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

Dr_Bra 28.03.2018 17:17

Обращение к объектам в библиотеке через массив
 
Всем доброго здоровья!

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

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

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

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


undefined 28.03.2018 17:49

Код AS3:

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

Цитата:

Сообщение от undefined (Сообщение 1204753)
Код AS3:

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


еще добавить
Код AS3:

import flash.utils.*;


Dr_Bra 28.03.2018 18:19

Вложений: 1
Цитата:

Сообщение от undefined (Сообщение 1204753)
Код AS3:

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


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

Код AS3:

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

Код AS3:

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

Код AS3:

var objPool:Array = [];
 
objPool[1] = container.addChild( new Object_1() );
...
objPool[X] = container.addChild( new Object_X() );
 
/////////////
 
objPool[ n ].methodName( бла бла бла );

или

Код AS3:

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



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

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