Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   MXML импорт симвоов (http://www.flasher.ru/forum/showthread.php?t=124118)

7thsky™ 23.04.2009 01:57

wvxvw - Блин ну что ВЫ спорите. Прочтите первый пост трэда!!!

Цитата:

Вопрос в следующем:

Как получить доступ к объектам (например к изображениям) внутри swf, скомпилированной из MXML
Если он использовал mxml (в его случае это 100% Application) там все уже включено, все нужные классы для поддержки стилей !!!

wvxvw 23.04.2009 02:48

Цитата:

Сообщение от 7thsky™ (Сообщение 814811)
wvxvw - Блин ну что ВЫ спорите. Прочтите первый пост трэда!!!



Если он использовал mxml (в его случае это 100% Application) там все уже включено, все нужные классы для поддержки стилей !!!

Чем мой MXML менее MXML чем тот, который с Application?
Еще раз, если человек не знает, что можно сделать нормально, зачем ему советовать сделать плохо?
Да и с чего вы взяли, что ему нужны стили? - судя по описанию, человек пытается флешку с ресурсами загрузить Loader'ом - (не ModuleLoader / ModuleManager).
А вообще, ладно. ОП вернется - сам рассудит :)

Kennysp 24.04.2009 12:04

Да, wvxvw прав, мне просто нужно запаковать изображения в один swf. И естественно размер полученного swf тоже важен.
В использовании стилей необходимости нет в данном случае. Но все равно большое спасибо за совет. Когда нибудь пригодится.

Пока правда не разобрался как реализовать IAssets, но обязательно разберусь :)

Kennysp 27.04.2009 18:55

wvxvw, можно несколько вопросов вам?

Первый:
Цитата:

И зачем вы туда запихали <mx:Application>? он там вообще не нужен...
Код вида:
Код:

        <fl:MovieClip xmlns:fl="flash.display.*" implements="ILoadable">
        <mx:Script>
                <![CDATA[
                        [Embed(source="arrow.png", mimeType="image/png")]
                        private var arrow:Class;       
                       
                        public function getImages():Array {
                                return [arrow];
                        }
                ]]>
        </mx:Script>
        </fl:MovieClip>

не компилируется:
Цитата:

Error: The prefix "mx" for element "mx:Script" is not bound.

<mx:Script>
^

А с application:
Код:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">       
        <fl:MovieClip xmlns:fl="flash.display.*" implements="ILoadable">
        <mx:Script>
                <![CDATA[
                        [Embed(source="arrow.png", mimeType="image/png")]
                        private var arrow:Class;       
                       
                        public function getImages():Array {
                                return [arrow];
                        }
                ]]>
        </mx:Script>
        </fl:MovieClip>
</mx:Application>

компилируется, но swf получается 151 кб (вместо 5 кбайт, если компилить из флэша)

И второй вопрос:
Перерыл форум и нашел Ваш исходник по вызову функции из подгруженного swf http://www.flasher.ru/forum/showpost...2&postcount=49
Пример отлично работает но когда я пытаюсь скомпилить loadable.swf через mxml, то после загрузки полученной swf строка в SWFLoader:
Код AS3:

var loadable:ILoadable = info.content as ILoadable;

возвращает null

Направьте плиз в нужную сторону. Спасибо.

wvxvw 27.04.2009 19:14

>> Код вида: [...] не компилируется:
Естественно не будет компилироваться - в моем коде был указан неймспейс для mx префикса, а вы его почему-то решили выбросить...

>> Пример отлично работает но когда я пытаюсь скомпилить loadable.swf через mxml, то после загрузки полученной swf строка в SWFLoader: [...] возвращает null

Естесственно, потому что вы не то компилируете, вам нужно скомпилировать только спрайт с ресурсами, а вы компилируете больше ста не нужных вам классов, при этом вы пытаетесь привести к нужному вам типу SystemManger класс, который и является документ классом любого приложения основаного на mx фреймворке. Опять же, смотрите предыдущий ответ - вы не то скомпилировали, вот и контент получился не того типа.

Прийду домой выложу полный проект со всеми исходниками и описанием компиляции... сейчас просто не на чем проверить (дурацкий недостаток FB - нельзя из одного проекта скомпилировать и AS и MXML файлы... по-этому для теста в FB прийдется использовать 2 проекта вместо одного в FD).

Kennysp 27.04.2009 19:21

Спасибо, буду ждать :)

wvxvw 28.04.2009 01:27

Вложений: 1
Вот, собрал, содержание архива:
Код:

|- bin
|  |- assets.swf // сюда компилируются ресурсы.
|  |- loader.swf // сюда компилируется загрузчик.
|- lib
|  |- clock.jpg // это наш ресурс.
|- run
|  |- build-loader.xml // файл конфигурации билда загрузчика.
|  |- build-resources.xml // файл конфигурации билда ресурсов.
|  |- compile-loader.bat // запуск билда загрузчика.
|  |- compile-resources.xml // запуск билда ресурсов.
|  |- manifest.xml // объявления кастомных MXML компонентов.
|- src
|  |- Assets.mxml // Энтри поинт для ресурсов
|  |- ResourceLoader.as // Энтри поинт для загрузчика (вобщем-то, это весь загрузчик)
|  |- org
|  |  |- wvxvws
|  |  |  |- gui
|  |  |  |  |- Control.as // Класс который наследует документ класс, который мы используем для ресурсов.
|  |  |  |  |- GUIEvent.as // Control зависит от этого класса событя.
|  |  |  |- resources
|  |  |  |  |- Resource.as // Класс обеспечивающий вставку ресурсов.
|  |  |  |  |- ResourceManager.as // Класс осуществляющий доступ до всех ресурсов включенных через Resource класс.


Kennysp 28.04.2009 16:58

Спасибо! Все скомпилилось )

Еще вопрос: принципиально ли использование именно URLLoader? Ведь swf умеет грузить и Loader.
Просто в данный момент для загрузки изображений используются zipы. Которые грузятся с помошью URLLoader`а. В момент загрузки очередного zip флэшка тормозит сильно.
Поэтому и решил изображения паковать в swf а не zip чтобы качать Loader`ом, а тут опять юзается URLLoader :(

wvxvw 28.04.2009 17:23

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

Kennysp 29.04.2009 15:16

Ну что сказать...
Большое спасибо, wvxvw. Очень помогли!


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

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