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

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

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

Регистрация: Aug 2012
Сообщений: 108
По умолчанию Класс из строки

Всем доброго дня. У меня есть массив типа

Код AS3:
private const UNITS:Array = [ClassA, ClassB, ClassC];
запускается нужный класс таким образом:

Код AS3:
private var index:uint = 1;
var unit:* = new UNITS[index]();
this.addChild(unit)
однако, требуется оптимизировать размер файла чтобы импортировался только 1 класс. Вариант - заменить массив на строки

Код AS3:
private const UNITS:Array = ["ClassA", "ClassB", "ClassC"];
но вот как их преобразовать потом? Варианты типа

Код AS3:
this[MODULES[index]]();
var ClassReference:Class = getDefinitionByName("ClassA") as Class;
не проходят

Старый 17.12.2012, 16:26
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 2  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
А какие варианты проходят?
__________________
hauts.ru

Старый 17.12.2012, 16:26
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Можно использоваться условную компиляцию, или грузить класс извне.
И не могли бы вы привести более конкретный пример, зачем вам это надо.

Старый 17.12.2012, 16:44
Stone вне форума Посмотреть профиль Отправить личное сообщение для Stone Найти все сообщения от Stone
  № 4  
Ответить с цитированием
Stone
 
Аватар для Stone

Регистрация: May 2001
Адрес: Москва
Сообщений: 670
Цитата:
Сообщение от Psijic Посмотреть сообщение
заменить массив на строки
в этом случае класс не будет вкомпелирован.
или придется каждый класс из массива компелить в отдельную свф и подгружать нужную, и уж только после загрузки использовать (getDefinitionByName).

Старый 17.12.2012, 17:09
Psijic вне форума Посмотреть профиль Отправить личное сообщение для Psijic Найти все сообщения от Psijic
  № 5  
Ответить с цитированием
Psijic

Регистрация: Aug 2012
Сообщений: 108
Цитата:
Сообщение от Hauts Посмотреть сообщение
А какие варианты проходят?
цель вопроса - как раз это и выяснить

Добавлено через 1 минуту
Цитата:
Сообщение от udaaff Посмотреть сообщение
Можно использоваться условную компиляцию, или грузить класс извне.
И не могли бы вы привести более конкретный пример, зачем вам это надо.
про 1-е просьба поподробнее, все-таки ищется конкретное решение. Директив типа #IFDEF я не находил во флеше Или вы предлагаете что-то типа:

case 1: ClassA;
case 2: ClassB;
case 3: ClassB;

Зачем это все надо - именно чтобы уменьшить размер swf на выходе, с несколькими классами условный вес получается 300кб, с одним - 150кб

PS думаю, если это вариант - то можно допустить здесь динамический импорт, тогда будет выглядеть типа

Код AS3:
switch(index) 
{ 
    case 0: 
        import ClassA;
        var unit:* = new ClassA;
        break; 
    case 1: 
        import ClassB;
        var unit:* = new ClassB;
        break; 
    case 2: 
        import ClassC;
        var unit:* = new ClassC;
        break; 
}

Старый 17.12.2012, 17:29
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 6  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Что-то вы явно не так понимаете. Если без подгрузки классов делать приложение, то вне зависимости от того, как вы классы инициируете, они все равно будут вшиты во флэшку.
__________________
hauts.ru

Старый 17.12.2012, 17:37
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 7  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
про 1-е просьба поподробнее
http://www.flasher.ru/forum/blog.php?b=530
http://livedocs.adobe.com/flex/3/htm...pilers_21.html

Добавлено через 11 минут
Цитата:
PS думаю, если это вариант - то можно допустить здесь динамический импорт, тогда будет выглядеть типа
И директива import лишь делает ваш класс видимым компилятору. Класс будет вкомпилен только в случае явного указания его имени.


Последний раз редактировалось udaaff; 17.12.2012 в 17:50.
Старый 17.12.2012, 18:42
Psijic вне форума Посмотреть профиль Отправить личное сообщение для Psijic Найти все сообщения от Psijic
  № 8  
Ответить с цитированием
Psijic

Регистрация: Aug 2012
Сообщений: 108
Цитата:
Сообщение от udaaff Посмотреть сообщение
http://www.flasher.ru/forum/blog.php?b=530
http://livedocs.adobe.com/flex/3/htm...pilers_21.html

Добавлено через 11 минут

И директива import лишь делает ваш класс видимым компилятору. Класс будет вкомпилен только в случае явного указания его имени.
да, :: я еще не использовал, посмотрю

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

Теги
классы

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

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


 


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


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