Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не импортируется пакет fl (http://www.flasher.ru/forum/showthread.php?t=131560)

SamFR 31.10.2009 02:15

Цитата:

Сообщение от Furinax (Сообщение 862228)
Просто есть люди, которые считают внешней библиотекой - только swf файл.

Если именно внешней, то может, они и правы. Я, по крайней мере, не нашёл способа подгружать ресурсы из swc в рантайме (хотя это не значит, что такого способа нет). Только на этапе компиляции.

Добавлено через 4 минуты
Цитата:

Сообщение от Felicast (Сообщение 862278)
swc - это просто набор классов, так что его и можно считать библиотекой.

В swc зашиваются не только классы, но и ресурсы (подключённые с помощью метатега Embed либо находящиеся в библиотеке и используемые в коде). Так что просто набором классов swc назвать никак нельзя.

Furinax 31.10.2009 10:52

У меня задание, в котором требуется подгружать всю графику из внешеней библиотеки.
Я связал нужные мне мувиклипы с пустыми автоматически создаваемыми классами AS (export fo ActionScript, export in first frame). Далее из этого файла вытаскиваю swc. Связываю его с новым файлом. Пишу основной класс, который на этапе выполнения создает эти самые мувиклипы слинкованные с классами.

Такой подход можно считать использованием внешней библиотеки?
Или же получается, что после компиляции все элементы уже будут содержаться в скомпилированном виде в новом файле?

etc 31.10.2009 11:22

Цитата:

Сообщение от Furinax (Сообщение 862328)
Такой подход можно считать использованием внешней библиотеки?
Или же получается, что после компиляции все элементы уже будут содержаться в скомпилированном виде в новом файле?

Да, после компиляции все элементы будут в основном swf. swc используется как хранилище только на этапе компиляции.

Furinax 31.10.2009 11:31

Тогда получается, что все таки swf файл, содержищай в себе все необходимо и есть внешняя библиотека...

Felicast 31.10.2009 12:10

Цитата:

В swc зашиваются не только классы, но и ресурсы (подключённые с помощью метатега Embed либо находящиеся в библиотеке и используемые в коде). Так что просто набором классов swc назвать никак нельзя.
как раз набор классов. каждый ресурс представляется классом.
хотя на самом деле swc - обычный zip-архив, в котором лежат ресурсы, скомпилированные swf-ки и xml файл, содержащий список доступных классов

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

Furinax 31.10.2009 21:59

Сделал так, чтобы все грузилось на этапе выполнения из swf файлы. Но вот проблема с RadioButton всплыла вновь.
Я применил способ описанный здесь http://www.murmadillo.tut.su/html/swf-lib.htm следующим образом:
Код AS3:

private function setupRadioButtons ():void {
        rbg = new RadioButtonGroup("question");
        createRadioButton("Yes", rbg, 230, 250);
        createRadioButton("No", rbg, 230, 280);
};
 
private function createRadioButton(rbLabel:String,rbg:RadioButtonGroup, X:Number, Y:Number):void {
        var rdBtn:Class = ldr.contentLoaderInfo.applicationDomain.getDefinition ("fl.controls.RadioButton")as Class;
        var disOb1:DisplayObject;
        var rb:Object;
        addChild (disOb1 = new rdBtn);
        rb = disOb1 as Object;               
        rb.move (X, Y);
        rb.group = rbg;
        rb.label = rbLabel;
        rb.setStyle ("textFormat", format);
        rb.addEventListener (MouseEvent.CLICK,checkAnswer);
};

На этапе выполнения возникает ошибка:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at fl.controls::RadioButton/drawLayout()
at fl.controls::LabelButton/draw()
at fl.controls::RadioButton/draw()
at fl.core::UIComponent/callLaterDispatcher()
Т.е. получается он до сих пор не видит компоненты.
Никаких мыслей как с этим бороться у меня даже не приходит в голову...

Вот код основного класса swf-файла, используемого в качестве библиотеки.
Код AS3:

package rmtest {
        import flash.display.MovieClip;
        import fl.controls.RadioButton;
 
        public class LibraryClass extends MovieClip {
 
        public var radBtnClass:Class = RadBtn;
 
                public function LibraryClass() {
                };
        };
}



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

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