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

dex157 11.01.2010 12:24

Создание экземпляра библиотечного класса
 
Работаю пока в flash cs4, в библиотеке куча элементов, как мне создавать их экземпляры на stage..?

Jewelz 11.01.2010 12:26

берете, и перетаскиваете :)

если имеется в виду обычная библиотека library

dex157 11.01.2010 12:37

Jewelz
ээ, я имел ввиду как через as это сделать можно..))

Jewelz 11.01.2010 13:01

аа.. тогда ставите нужным элементам Linkage, Export for ActionScript

пишите класс и базовый класс

потом импортируете его и создаете экземпляр

dex157 11.01.2010 13:13

Jewelz
Большое спасибо..)

retail_ret 12.01.2010 11:22

Код AS3:

package inc
{
        import flash.utils.getDefinitionByName;
        public class ClassFactory
        {
                static function generateSoundClass(name:String)
                {
                          var modul:* = '';
                                try {
                          var class_id:Class = getDefinitionByName(name) as Class;
                          try {
                                modul = new class_id();
                          }catch (err) {
                                trace(err);
                          }
                          } catch (err) {trace(err)}
                          if (modul == '') trace('неправильно написано имя класса ' + name);
                          return modul;
                        }
                static function generateImageClass(name:String)
                {
                          var modul:* = '';
                                try {
                          var class_id:Class = getDefinitionByName(name) as Class;
                          try {
                                modul = new class_id(class_id.width,class_id.height);
                          }catch (err) {
                                trace(err);
                          }
                          } catch (err) {trace(err)}
                          if (modul == '') trace('неправильно написано имя класса ' + name);
                          return modul;
                        }
 
 
        }
}

Две функции для генерации объектов типа Bitmap и Sound. Использование:
Код AS3:

var tmp:Bitmap= new Bitmap(ClassFactory.GenerateImageClass("имя класса"));


etc 12.01.2010 11:58

retail_ret, вы уверены, что у class_id есть width и height?

retail_ret 12.01.2010 12:01

Если создаем картинку из библиотеки, то есть ширина и высота. Для звуков соответственно нет, от того и функции разные.

etc 12.01.2010 12:05

retail_ret, внимательно прочитайте мой вопрос.

dimarik 12.01.2010 12:08

var class_id:Class;

Объект типа Class не имеет свойств width и height.

retail_ret 12.01.2010 12:12

Это всё понятно, что не имеет свойств. Однако это работает и в конструкторе класса BitmapData требуется ширина и высота. Чем объяснить то, что это всё работает? Видимо объект типа Class получает эти свойства ширина и высота.

etc 12.01.2010 12:14

Вероятно у вас отключен strict mode при компиляции, поэтому и ошибки нет.
Тру-флешеры никогда не отключают strict.

Точнее проблема даже не в этом, а в том, что и Class и генерируемый наследник — dynamic. Поэтому обращения к неопределенным свойствам ошибки не дают.

retail_ret 12.01.2010 12:37

dynamic это верно, но свойства в нем опредлены. Объект Class содержит статические свойства и методы класса, которые мы указываем в getDefinitionByName (). Объект класса создает экземпляры класса, когда вызывается с помощью оператора new. Мне здесь все ясно. Как мне кажется, IDE при linkage генерирует класс со всеми свойствами картинки и прописывает их в описании класса.

etc 12.01.2010 12:41

Вам только кажется.

retail_ret 12.01.2010 12:49

Это описано в справочнике в примерах ActionScript - Class. При экспорте в ActionScript Ide выдает сообщение, что будет сгенерирован класс. Для меня это всё ясно, не знаю как для Вас.

etc 12.01.2010 12:56

Класс генерится, да. Но свойств width и height он не содержит, вам только кажется.
Значения аргументов конструктора для сгенерированного класса-наследника BitmapData никакого влияния не оказывают на размеры созданной картинки. Поэтому передавая по факту нули (т. к. конвертация из undefined в int), вы всё равно получаете нужную картинку.

retail_ret 12.01.2010 13:04

Вы правы. Сам не проверил сразу.


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

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