PDA

Просмотр полной версии : Загрузка ассетов из внешних swf под IOS


uglan
24.10.2013, 21:03
Всем привет!
Есть какой-нибудь способ загрузки ассетов из внешних swf без создания списка swf (http://labsdownload.adobe.com/pub/labs/flashruntimes/shared/air3-7_flashplayer11-7_releasenotes.pdf) и последующего запекания в ipa? То есть чтобы swf были внешними но не входящими в состав приложения. Совсем внешний источник не подходит т.к. для него нужно постоянное соединение с интернетом.

Котяра
24.10.2013, 23:10
Совсем внешний источник не подходит т.к. для него нужно постоянное соединение с интернетом.
Вот этого не понял совсем. Так вам нужен внешний сервер или не нужен?
Может это поможет http://www.flasher.ru/forum/blog.php?b=631
Как раз на эту тему заморачивался.

uglan
25.10.2013, 10:39
Вот этого не понял совсем. Так вам нужен внешний сервер или не нужен?
Нет, мне нужны файлы локально но за пределами исполняемого файла. Видимо другого способа нет кроме как распаковать их из архива или скачать с сервака. Просто такую процедуру придется делать после каждой новой компилляции.

Может это поможет http://www.flasher.ru/forum/blog.php?b=631
Как раз на эту тему заморачивался.
Почитал. Тут посути просто пак Растровых(!) ресурсов, а меня интересует сохранность именно векторных мувиков со всей их структурой...

Добавлено через 52 часа 10 минут
Возникла другая проблема тут. Загружаю ассеты из swf вроде все хорошо(по прежнему речь про IOS), но загружаются они только один единственный раз. При повторном обращении к функции загрузки просто ничего не происходит, ошибки никакой не выдает. В дебагере на IDE все отлично, таких проблем нет. Что это может быть??? Вот тут (http://stackoverflow.com/questions/19536000/load-and-reload-external-swf-in-air-for-ios) например парень мучается с той же проблемой но ответа в чем дело там нет.

Код функции:
private function LoadFullAsset(assetPath:String,className:String,container:Sprite,callback:Function):void{
var myLoader:Loader= new Loader();
var myUrlReq:URLRequest = new URLRequest(assetPath);
var _lc:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null);

var myAsset:MovieClip;
myLoader.load(myUrlReq,_lc);
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);

function onLoaded(event:Event):void{
var c1ad:ApplicationDomain = (event.target as LoaderInfo).applicationDomain;

var tmpAsset:Class = c1ad.getDefinition(className) as Class
myAsset = new tmpAsset() as MovieClip;

container.addChild(myAsset);
callback.call();
}
}