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

Nikolay00700 30.01.2012 12:21

Создание объектов в цикле
 
У меня есть файл библиотеки swc, который содержит, допустим
100 картинок (классов). Мне нужно создать массив из всех этих картинок.
Как это сделать проще? Циклом. Как сделать название классов картинки в виде переменной?

Например могу так:

Код AS3:

Мас:array=new Array;
 
Mac[1]=new image001();
Mac[2]=new image002();
 
...
 
Mac[100]=new image100();

Как сделать проще, в цикле?

Genzo 30.01.2012 12:28

Код AS3:

for(var i:uint = 0;i<100;i++)
{
var ClassReference:Class = getDefinitionByName("image" + i) as Class;
var instance:Object = new ClassReference();
mac.push(instance);
}


HardCoder 30.01.2012 12:50

Поправочка:
Мне кажется, что так просто getDefinitionByName не найдет класс. Этот класс нужно хоть раз где-то обьявить в коде. Типа указать что он существует.
Код AS3:

const classes:Vector.<Class> = new <Class>[image001, image002, image003........];
.........................................................................
var name:String = "image";
var ClassReference:Class;
var instance:*;
for(var i:uint = 1; i <= 100; i++) {
  if(i < 100) {
      name += "0";
  }
  if (i < 10) {
      name += "0";
  }
  ClassReference = getDefinitionByName(name + i) as Class;
  instance = new ClassReference();
  mac.push(instance);
}


Dukobpa3 30.01.2012 13:05

свц может подключаться тремя методами:
- как внешняя библиотека (вообще не вкомпиливаться)
- как встроенная библиотека (скомпиливается полностью вне зависимости от того дергали мы класс или нет)
- библиотека "по вызову" - вкомпиливаются только те классы которые были объявлены в коде.

В данном случае нужен второй вариант.

HardCoder 30.01.2012 13:12

Dukobpa3, я так понимаю:
1 - загрузка в рантайме;
2 - ?????????????????;
3 - ?????????????????
Можно по подробнее по 2-му и 3-му?

Добавлено через 4 минуты
Попробовал подключить библиотеку в ФД привычным для меня способом: "Add to library".
getDefinitionByName класс не увидел.

Dukobpa3 30.01.2012 13:23

Если фд, то:

тыкаем правой кнопкой на свц.
Ставим галку подключить. После этого библиотека по дефолту подключится третьим способом.
Если нам нужен гетДефинишн - то надо опять тыкнуть правой кнопкой по свц, там выбрать опшинс, и поставить "included library".

Что там с первым способом я хз. Возможно просто чтоб автокомплит работал, но загружать придется руками лоадером. Иногда полезно если какой-то клиент-сервер с модульной структурой, или игра какая-то и чтоб сама флешка весила мало, то делают арт подгружаемый с сервера, а дальше гетДефинишн или что-то другое.

HardCoder 30.01.2012 13:27

Цитата:

Сообщение от Dukobpa3 (Сообщение 1059964)
Если нам нужен гетДефинишн - то надо опять тыкнуть правой кнопкой по свц, там выбрать опшинс, и поставить "included library".

Теперь заработало. Спасибо.


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

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