Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.09.2009, 18:56
yanmasharski вне форума Посмотреть профиль Отправить личное сообщение для yanmasharski Найти все сообщения от yanmasharski
  № 1  
Ответить с цитированием
yanmasharski
 
Аватар для yanmasharski

Регистрация: Oct 2008
Сообщений: 24
Question Вопрос по конструкторам классов.

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

Код внутри цикла пока напоминает нечто такое:
Код AS3:
var pic:Object = new pageOrder[p1];
pages.addChild(pic);

Старый 13.09.2009, 18:59
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Код AS3:
new PageOrder(p1);

Старый 13.09.2009, 19:25
yanmasharski вне форума Посмотреть профиль Отправить личное сообщение для yanmasharski Найти все сообщения от yanmasharski
  № 3  
Ответить с цитированием
yanmasharski
 
Аватар для yanmasharski

Регистрация: Oct 2008
Сообщений: 24
Попробовал. Что-то не получилось.

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

Может массив нужно задать как-то по особому? У меня он задан так:
Код AS3:
var pageOrder =  new Array (page0,page1,page2,page3);

Старый 13.09.2009, 19:27
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Аа, всё иначе. Ну тогда:
Код AS3:
var picСlass:Class = pageOrder[p1];
var pic:DisplayObject = new picClass() as DisplayObject;
pages.addChild(pic);


Последний раз редактировалось etc; 13.09.2009 в 19:33.
Старый 13.09.2009, 19:56
yanmasharski вне форума Посмотреть профиль Отправить личное сообщение для yanmasharski Найти все сообщения от yanmasharski
  № 5  
Ответить с цитированием
yanmasharski
 
Аватар для yanmasharski

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

Код 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);
//...............

Старый 13.09.2009, 20:39
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 6  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Однако способ, который предлагает _etc, более гибкий. Если ещё заюзать getDefinitionByName, то можно имена классов вообще строками задавать и, как следствие, загружать извне. Но это, конечно, не всегда нужно =)

Старый 13.09.2009, 23:17
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
SamFR, да я подобный способ и не предлагал, я вообще не был в курсе, что там в массиве pageOrder лежало

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:16.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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