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

yanmasharski 13.09.2009 18:56

Вопрос по конструкторам классов.
 
Собственно, имеется куча классов, которые лежат в библиотеке. Допустим, что их имена я храню в массиве. Есть цикл, который должен создавать по одному экземпляру класса. Как реализовать смену вызываемого конструктора?

Код внутри цикла пока напоминает нечто такое:
Код AS3:

var pic:Object = new pageOrder[p1];
pages.addChild(pic);


etc 13.09.2009 18:59

Код AS3:

new PageOrder(p1);


yanmasharski 13.09.2009 19:25

Попробовал. Что-то не получилось.

TypeError: Error #1007: Попытка реализации в объекте, который не является конструктором.

Может массив нужно задать как-то по особому? У меня он задан так:
Код AS3:

var pageOrder =  new Array (page0,page1,page2,page3);


etc 13.09.2009 19:27

Аа, всё иначе. Ну тогда:
Код AS3:

var picСlass:Class = pageOrder[p1];
var pic:DisplayObject = new picClass() as DisplayObject;
pages.addChild(pic);


yanmasharski 13.09.2009 19:56

Решил проблему иначе. Создал вначале объекты класса, запихнул их в массив и потому уже выдёргивал нужные мне из массива. Но всёравно спасибо за помощь.

Код AS3:

var page0_e = new page0();
//...............
var pageOrder =  new Array (page0_e,page1_e,page2_e,page3_e);
//...............
 
//Начало цикла
var pic:MovieClip = pageOrder[p1];
pages.addChild(pic);
//...............


SamFR 13.09.2009 20:39

Однако способ, который предлагает _etc, более гибкий. Если ещё заюзать getDefinitionByName, то можно имена классов вообще строками задавать и, как следствие, загружать извне. Но это, конечно, не всегда нужно =)

etc 13.09.2009 23:17

SamFR, да я подобный способ и не предлагал, я вообще не был в курсе, что там в массиве pageOrder лежало :)


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

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