Загрузка swf из хостинга в ВК

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
Turbo-Dizel
Сообщения: 11
Зарегистрирован: 06 янв 2013, 23:48

Загрузка swf из хостинга в ВК

Сообщение Turbo-Dizel »

Привет! Сразу скажу, поиск юзал, часа три примерно сижу пытаюсь решить проблему, но на данный момент я исчерпал свои силы :) .
В общем, у меня игра состоит из 3 swf, называются preloader, main, game. Раньше я делал так: на хостинг заливал всё необходимое (swf, php файлы), и в настройках приложения выбирал iFrame, а адрес вписывал своего прелоадера. Тогда у меня всё отлично работало, прелоадер загружал main, а main по команде загружал game. Но тогда ужасно работали сами меню ВКонтакте (Настройки, Пригласить друзей, оплата голосов и т.п.). Т.е. они моргали, или появлялись под моей игрой а не над ней. После этого решил сделать так: выбрать в настройках приложения вместо iFrame Flash, залить туда preloader, и чтобы прелоадер уже сам себе добавлял флехи из хостинга, делал запросы и так далее. Но во флешке game появляется ошибка (Security Sandbox Violation), когда начинается сама игра (именно когда создаются листенеры ENTER_FRAME и другие). Начитался про crossdomain.xml и allowDomain, но ничего из этого не помогло. Просто в тот момент, когда создается ENTER_FRAME игра виснет, а звуки продолжают проигрываться. Ещё раз скажу, что когда делал через iFrame, всё работало как надо, просто меню оплаты голосами появлялось под приложением, поэтому пришлось всё менять.
Вот содержимое crossdomain.xml

Код: Выделить всё

 <cross-domain-policy><allow-access-from domain="*.vkontakte.ru" /><allow-access-from domain="*.vk.com" /><allow-access-from domain="*.userapi.com" /></cross-domain-policy> 
Ещё писал просто "*", но это тоже не работало.
А allowDomain прописал в игре возле объявления переменных вот так:

Код: Выделить всё

 Security.allowDomain("*"); 
Что странно, меню отлично работает и не выделывается, правда в нем enter_frame`а нет.
В общем я уже не знаю, что делать. Пытался даже флешки загружать все три вконтакте, с помощью функции ихней "Дополнительные SWF-файлы", все равно не работало.

Кстати, на всякий случай, в game запросов к БД и VK api нет, .
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Загрузка swf из хостинга в ВК

Сообщение Alazaur »

Чтобы не было проблем с кроссдоменностью

Код: Выделить всё

Security.loadPolicyFile("http://сайт/crossdomain.xml");
А чтобы окна ВК не показывались под флешем в фрейме надо в html внедряющий флеш в параметре wmode указать значение opaque
Turbo-Dizel
Сообщения: 11
Зарегистрирован: 06 янв 2013, 23:48

Re: Загрузка swf из хостинга в ВК

Сообщение Turbo-Dizel »

Alazaur писал(а):Чтобы не было проблем с кроссдоменностью

Код: Выделить всё

Security.loadPolicyFile("http://сайт/crossdomain.xml");
А чтобы окна ВК не показывались под флешем в фрейме надо в html внедряющий флеш в параметре wmode указать значение opaque
С loadPolicyFile сейчас попробую, а по поводу флешки в html, у меня загрузка идет на прямую, т.е. сразу адрес флешки, без html файла. Если я html файл сделаю, и вставлю с помощью object например, если так можно, то приложение не получает id пользователя и другие свойства. Хотя по поводу отдельного html файла ничего не читал, пробовал вставить как это по стандарту в html страницах делается, возможно что-то не доделал.
Turbo-Dizel
Сообщения: 11
Зарегистрирован: 06 янв 2013, 23:48

Re: Загрузка swf из хостинга в ВК

Сообщение Turbo-Dizel »

loadPolicyFile не помогло, вот весь текст ошибки (это не из контакта, а из компа загрузка):

Код: Выделить всё

 *** Security Sandbox Violation ***SecurityDomain 'http://cайт.ru/crossdomain.xml' tried to access incompatible context 'file:///D|/ZombieS/preloader/preloader.swf'SecurityError: Error #2070: Security sandbox violation: caller http://сайт.ru/game_zombiestream/game.swf cannot access Stage owned by file:///D|/ZombieS/preloader/preloader.swf.    at flash.display::Stage/flash.display:Stage::requireOwnerPermissions()    at flash.display::Stage/addEventListener()    at main/::gameStart() 
было бы конечно проще просто решить проблему с перекрытием флешкой окон контакта, чем парится с кроссдоменостью.
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Загрузка swf из хостинга в ВК

Сообщение Alazaur »

Хрень какая-то сколько помню никогда проблем с кроссдоменностью не было, хотя до того как перейти на FD тоже всегда использовал внешний прелоадер.
А внедрять флешку в html чтобы передавались параметры ВК можно например так:

Код: Выделить всё

<!DOCTYPE html><html>    <head>        <meta charset="windows-1251"/>        <script src="http://vk.com/js/api/xd_connection.js" type="text/javascript"></script>        <script src="swfobject.js"></script>        <script>            var params = {                menu: "false",                scale: "noScale",                allowFullscreen: "true",                allowScriptAccess: "always",                bgcolor: "",                wmode: "opaque",                flashvars: window.location.search.substring(1)            };            var attributes = {                id:"preloader"            };            swfobject.embedSWF(                "game.swf",                 "altContent", "700", "550", "10.0.0", null,                 null, params, attributes);        </script>    </head>    <body>        <div id="altContent" style="text-align:center">            <p><a href="http://www.adobe.com/go/getflashplayer">Get Adobe Flash player</a></p>        </div>    </body></html>
Там же рядом с html файлом должен лежать файл swfobject.js (генерируется IDE) ну и флешка game.swf. Названия ессно измените на нужные.
Turbo-Dizel
Сообщения: 11
Зарегистрирован: 06 янв 2013, 23:48

Re: Загрузка swf из хостинга в ВК

Сообщение Turbo-Dizel »

С на четверть рабочим интернетом наконец-то получилось! Огромнейшее спасибо за помощь, сам бы не справился ни за что).
Ответить