Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Ошибка безопасности при загрузке из вторичной swf (http://www.flasher.ru/forum/showthread.php?t=175760)

maxkar 23.02.2012 20:11

Лоадер должен быть на серверах контакта. И game.swf должен грузиться в домены (App и Security) Loader'а. Только тогда все будет хорошо. Во всех остальных случаях исходный домен будет не тот. Если хочется запускать локально - используйте хак.

s3dworld 23.02.2012 20:25

maxkar
Цитата:

Лоадер должен быть на серверах контакта. И game.swf должен грузиться в домены (App и Security) Loader'а. Только тогда все будет хорошо.
Хорошо! Всё тоже самое. Ничего не меняю. То есть вот так в Loader.swf:

Код AS3:

gameLoader.load(
    new URLRequest("http://????/Game.swf?"+(new Date()).getTime().toString()),
    new LoaderContext(true,ApplicationDomain.currentDomain,SecurityDomain.currentDomain));

Гружу его ВКонтакт. Запускаю и где-то ошибка, так как Flash'ка повисла.

maxkar 23.02.2012 21:21

А какая ошибка то??? "Работает"/"не работает" - это плохая диагностика. Она даже не говорит, на каком шаге произошла ошибка.

Можно дебагером подключиться и посмотреть, что происходит. Можно на нужные события подписаться и куда-нибудь на сцену вывести текст/картинку/объект в зависимости от типа ошибки. У вас плеер дебажный в браузере или обычный?

Да и вообще "подвисать" неправильно! Может, у пользователя в момент загрузки картинок проблемы с сетью возникли. Или у контакта. Ваше приложение так и будет висеть или какое-нибудь вразумительное сообщение выведет?

carrotoff 23.02.2012 21:33

Цитата:

Гружу его ВКонтакт. Запускаю и где-то ошибка, так как Flash'ка повисла.
Посмотрите дебагером, какая ошибка.

s3dworld 23.02.2012 21:42

Ребят, тогда подскажите как на Google Chrome поставить Flash Player для отладки. Захожу на сайт Adobe, а мне пишут что у меня уже стоит проигрыватель. А как его удалить, я не нашёл.

maxkar 23.02.2012 22:10

Плеер нужно взять здесь. Вам нужен plugin content debugger.

После этого можно попробовать переключить плеер, описано здесь. Удалить плеер из хрома может оказатсья сложно (проще выключить встроенную версию).

Ну или можно поставить другой бразуер (это может оказаться проще, чем настраивать хром).

s3dworld 23.02.2012 22:23

maxkar
Так и сделал. Поставил Debug на IE (стыдно, но что же делать). В общем вот что мне он выдал:

Цитата:

SecurityError: Error #2121: Нарушение изолированной среды: Loader.content: http://cs303315.vk.com/[[IMPORT]]/????/Game.swf?1330021208255 не может осуществить доступ к http://????/bonfire.swf. Этого можно избежать посредством вызова Security.allowDomain.
at flash.display::Loader/get content()
at d.game.loading::MapLoad/GetData()
at d.game.render::RenderMap/Draw()
at d.game.manager::MapManager/OnAllObjectsLoadSuccess()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at d.game.loading::MapLoad/OnObjectLoadSuccess()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at d.game.loading::ObjectLoad/OnComplete()

maxkar 23.02.2012 22:37

Вот. Уже гораздо лучше. До контакта дело не доходит (и там то, скорее всего, уже все нормально). В какие Application/Security домены грузится bonfier.swf? Вероятно, в bonfire.swf нужно прописать Security.allowDomain("*"). Иначе доступа к конетнту не будет. Или грузить bonfire.swf тоже в SecurityDomain.currentDomain (application domain может быть другой). Последнее для доступа к классам точно работает (без прописывания allowDomain), для Loader.content - не знаю.

Добавлено через 15 минут
Есть еще один вариант. Но он может оказаться менее красивым и сложнее в реализации.

Загрузку картинок из контакта можно сделать в Loader.swf. Game.swf в этом случае загружается в свой applicationDomain/securityDomain, разрешает всем доступ (allowDomain("*")). Для загрузки аватарок обращается к Loader.swf (доступ разрешен), та в свою очередь загружает картинку и извлекает из нее bitmapData (так как она на серверах контакта, но loadPolicyFile все равно должен быть установлен) и передает уже извлеченную bitmapData в Game.swf. Не нравится мне то, что сетевые сервисы (с кодом обработки ошибок и т.п.) могут оказаться размазаны по Game.swf и Loader.swf

dimarik 24.02.2012 09:54

http://www.flasher.ru/forum/blog.php?b=332
http://www.flasher.ru/forum/blog.php?b=209

s3dworld 29.02.2012 18:08

Всем доброго дня!

Запустил игру из контакта (на этот раз без Loader'а, а сразу Game.swf). Вот что мне выдаёт отладочный Flash Player в браузере Internet Explorer:

Цитата:

SecurityError: Error #2121: Нарушение изолированной среды: Loader.content: http://cs5436.vk.com/????/????.zip не может осуществить доступ к http://????/bonfire.swf. Этого можно избежать посредством вызова Security.allowDomain.
Это не swf с игрой, это просто объект на карте, который представляет из себя анимацию, поэтому он и засунут в swf. Не помню есть ли в нём скрипт внутри (хотя скорее всего есть в последнем кадре скрипт возврата на первый кадр чтобы по кругу воспроизводилась анимация). В общем что за Security.allowDomain мне надо сделать и что самое главное, где?

Самое интересное, что у меня на локальном компе это всё работает. Кидаю другому на комп и у него
то не работает. Закидываю в контакт и там тоже не работает.


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

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