![]() |
MXML импорт симвоов
Вопрос в следующем:
Как получить доступ к объектам (например к изображениям) внутри swf, скомпилированной из MXML Т.е. есть mxml файл Код:
<?xml version="1.0" encoding="utf-8"?>Как теперь получить доступ к изображению image1? При использовании linkage -> Export for ActionScript все ясно: Код:
[Embed(source="test.swf", symbol="SymbolName")] |
В случае с Image, это будет (Object(myImage.content).constructor as Class). А в случае с любым другим компонентом это может быть что угодно... а почему именнo Image нужен?
|
Задача такая: вместо того чтобы грузить множество картинок- запаковать их в swf и загрузить одним файлом. Картинок много, поэтому вставлять в библиотеку флэша и отмечать у каждой Export for ActionScript - не выход.
Подумал использовать компиляцию из xmxl - програмно сгенерировали xmxl, скомпилировали swf - готово. После этого в основном приложении загружаем полученную swf с помощью loader и достаем картинки. Код AS3:
Изменю свой вопрос: Есть mxml, в котором объявлен класс (ResoursesClass скажем). После компиляции мы получили resourses.swf. Как мне получить доступ к ResoursesClass после загрузки loader`ом? |
Ммм... нет, так вы можете получить ссылку на класс, который был сгенерирован врезультате ембеда (только после того, как картинка была загружена).
Но я бы сказал, что это не удобно... для вашей ситуации... а почему нельзя сгенерить те же теги ембедов? Так загружаемая флешка получится гораздо меньше в размере, да и вообще мороки меньше... т.е. генерим такой вот MXML: Код:
<fl:Sprite xmlns:fl="flash.display.*" xmlns:mx="..." implements="IAssets"/>Это не нужно генерить каждый раз, одного раза достаточно: Код AS3:
Код AS3:
|
wvxvw, спасибо большое.
Добавлено через 35 минут Не совсем понял с интерфейсом IAssets Есть mxml: Цитата:
Код AS3:
Код AS1/AS2:
Код AS3:
|
Так вы не имплементили интерфейс - естественно, если вы будете приводить типы ничего не получится...
Т.е. вы имплементите разные интерфейсы, IAssets и classes.IAssets. И зачем вы туда запихали <mx:Application>? он там вообще не нужен... |
Еще можно запихнуть картинки в CSS и не париться. Определить селектор с картинками и его и использовать везде.
типа: Код:
<?xml version="1.0" encoding="utf-8"?> |
@ 7thsky™:
Ну только вот зачем человеку в ресурсах тащить весь фреймворк если ему от туда 5 классов нужно? Разница между 5К и 150К все-таки не такая уж маленькая... |
Ох боже ты мой wvxvw - человек использует mx.core.Application из Flex'а? использует mx.controls.Image? (первый пост человека в этом треде)- туда уже все эти классы включенны. О чем спорить собираемся?
Вопрос в теме про флекс - решение соответственно флексовое. Правильное флексовое решение - это стили. плюсы очевидны - возможность байндить + рантайм загрузска CSS модулей. Можно реализовать каcтомные решения типа Вашего, все будет работать, вопрос только зачем когда уже есть встроенный механизм. |
По-моему из того же первого поста ясно видно, что человеку Application и Image ни во что не уперся, и он просто не знает, как то же самое можно сделать проще и гораздо эффективнее. Это вообще абсурд предлагать встроить в библиотеку картинок весь фреймворк только ради того, чтобы эти картинки можно было встраивать как стили... Мое решенее ни чуть не менее "Флексовое", оно просто на 150К меньше весит и компилироваться будет быстрее...
PS. Да и плюс потом не будет головной боли с загрузкой фрейморковской SWF в не-фреймворковский контекст... это хотошо, что сейчас можно с помощью" хака это сделать, но вполне возможно что туда еще какую-нибудь ерунду добавят, и "хак" перестанет работать... кроме того, человек впервые столкнувшийся с этой проблемой может много времени убить на то, чтобы просто понять, как это чудо загрузить... |
| Часовой пояс GMT +4, время: 12:27. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.