Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.10.2012, 23:02
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 1  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
По умолчанию Проблема получения доступа к элементам SWF в AIR для iOS

Как известно политика безопасности не разрешает использовать вторичные SWF с кодом в iOS. Но в моем случае, в SWF запакованы только ассеты (Movie clip) с разными instance names. Поэтому проблем не должно быть в принципе.

Итак, скачиваем SWF с сервера обычным лоадером, сохраняем в applicationStorageDirectory, затем добавляем на сцену тоже лоадером и все прекрасно работает. Но только в дебаговой версии. Компилируем в ad hoc и ассеты не добавляются. Сами понимаете, нормальных трейсов в таком режиме нет, Монокль для iOS не распространяется, ошибок нет, приходится обходиться визуальными трейсами в самописном окне.

Пробуем понять причину:
Код AS3:
bgInfo //это полученный после загрузки swf LoaderInfo и судя по размеру totalBytes там все как нужно
 
_background = new (getSkinClass(bgInfo, "mcBG"))() as DisplayObject;
_background.x = (stage.stageWidth - _background.width) / 2;
_background.y = (stage.stageHeight - _background.height) / 2;
addChild(_background);
 
bgInfo.applicationDomain.getQualifiedDefinitionNames().length;// здесь у нас NaN
getDefinitionNames(bgInfo);//это класс etc, за что ему отдельное спасибо, но тоже не спасет, здесь вообще ничего не происходит, пусто.
 
public static function getSkinClass(asset_info:LoaderInfo, skinAsset:String):Class{
			try{
				var assetClass:Class = asset_info.applicationDomain.getDefinition( skinAsset ) as Class;
				return assetClass;
			} catch(e:Error) {
				throw new IllegalOperationError( 'getSkinAsset( ' + skinAsset + ' ) - error msg: ' + e.message );
			}
			return null;
		}
Что тут может быть не так? Почему такие проблемы? Бьюсь почти месяц. AIR SDK 3.3, 3.4, 3.5. Flex SDK 4.6, 4.8 - в любых комбинациях.
Прошу помочь любыми советами, наводками.

Добавлено через 10 минут
Да и ещё. Те же самые SWF прекрасно загружаются тем же кодом главного приложения, если находятся в папке с приложением (applicationDirectory). Ну это ещё можно перенести. Но совершенное чудо происходит, если сделать такой финт - не скачивать SWF с сервера, а просто скопировать (программно) из папки applicationDirectory в папку applicationStorageDirectory и потом уже от туда добавлять на сцену лоадером (код добавления везде один и тот же, меняются только урлы) - часть ассетов нормально добавляется, часть не добавляется. Без всякой логики и причин.
__________________
In Code We Trust

Старый 14.11.2012, 17:47
Konung вне форума Посмотреть профиль Отправить личное сообщение для Konung Найти все сообщения от Konung
  № 2  
Ответить с цитированием
Konung

Регистрация: Dec 2006
Сообщений: 17
Привет, не разобрались с проблемой?

Старый 14.11.2012, 18:08
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 3  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Частично - да, помогли добрые люди. Там главное в ассетах нужно имена проставить и в названии символа в библиотеке и в инстансах, ну и добавить на сцену. Обращаться по имени.
__________________
In Code We Trust

Старый 14.11.2012, 18:14
Konung вне форума Посмотреть профиль Отправить личное сообщение для Konung Найти все сообщения от Konung
  № 4  
Ответить с цитированием
Konung

Регистрация: Dec 2006
Сообщений: 17
Видимо ключевой момент, что на сцену надо добавлять? через getDefinition из библиотеки не получится вытянуть? у меня не получается на устройстве.

Старый 14.11.2012, 19:18
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 5  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Обязательно, но не знаю насколько ключевой.
__________________
In Code We Trust

Старый 14.11.2012, 21:01
maincode вне форума Посмотреть профиль Отправить личное сообщение для maincode Посетить домашнюю страницу maincode Найти все сообщения от maincode
  № 6  
Ответить с цитированием
maincode

Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
Добавлять на Stage и брать по имени - это обязательно!
Если Вы задаете linkage, и пытаетесь вытащить картинку с помощью getDefinition, вы используете код(!) загруженной флешки, т.к. создаете класс(!), не важно какой (Bitmap это или Sprite), а использование кода в загруженной флешке запрещено.

Старый 14.11.2012, 21:06
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 7  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Цитата:
а использование кода в загруженной флешке запрещено.
В 3.5 уже нет.
__________________
In Code We Trust

Старый 14.11.2012, 23:51
maincode вне форума Посмотреть профиль Отправить личное сообщение для maincode Посетить домашнюю страницу maincode Найти все сообщения от maincode
  № 8  
Ответить с цитированием
maincode

Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
интересно, не знал )

Старый 15.11.2012, 08:34
Karmodi вне форума Посмотреть профиль Отправить личное сообщение для Karmodi Найти все сообщения от Karmodi
  № 9  
Ответить с цитированием
Karmodi

Регистрация: Jul 2008
Адрес: South of China
Сообщений: 11
Отправить сообщение для Karmodi с помощью ICQ
Приветствия. Подскажите пожалуйста. У меня схожая проблема, надо загрузить на iPad swf`ки, при этом они чаще всего содержат код - который можно ( и нужно ) игнорировать. Можно ли это сделать не получая ошибки, если это не возможно то, есть ли возможность "отрезать" весь код на стороне сервера? Спасибо.

Старый 15.11.2012, 11:26
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 10  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Цитата:
Можно ли это сделать не получая ошибки, если это не возможно то, есть ли возможность "отрезать" весь код на стороне сервера?
Какие ошибки получаете? Отрезать код на стороне сервера...
__________________
In Code We Trust

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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