IFrame + flash

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Ответить
Аватара пользователя
Volgar
Сообщения: 113
Зарегистрирован: 26 авг 2010, 18:56

IFrame + flash

Сообщение Volgar »

http://flapps.ru/forum/topic1343.html
Подскажите как вызвать эту HTML, если само приложение flash? Например, по клику на кнопку. Ну и передать и получить все эти переменные. Пробовал использовать HTTP Service, но никакой реакции.
Аватара пользователя
Volgar
Сообщения: 113
Зарегистрирован: 26 авг 2010, 18:56

Re: IFrame. Переменные (getVariable и putVariable)

Сообщение Volgar »

Volgar
Подгружаешь swf на странице? То есть твоё приложение IFrame? Может тогда не вызывать этот код из флешки, а сделать его основной частью приложения?
Александр
Да, у меня swf подгружается с адреса допустим http://mySite.ru/myapps/myapp.html
А скрипт находится по адресу http://mySite.ru/myapps/myscript.html
И вот нужно вызвать скрипт с swf.
Может тогда не вызывать этот код из флешки, а сделать его основной частью приложения?
А вот как? Я в JS не силен.

Вот мой myapp.html, он в принципе генерируется флексом (использую всегда swfobject):

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!-- saved from url=(0014)about:internet --><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">     <head>        <title>MyApp</title>                 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />        <style type="text/css" media="screen">             html, body  { height:100%; }            body { margin:0; padding:0; overflow:auto; text-align:center;                    background-color: #cd2727; }               #flashContent { display:none; }        </style>        <link rel="stylesheet" type="text/css" href="history/history.css" />        <script type="text/javascript" src="history/history.js"></script>            <script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script>    <script src="http://vk-jsapi.googlecode.com/svn/trunk/vk_api.min.js" type="text/javascript"></script>        <script type="text/javascript" src="swfobject.js"></script>        <script type="text/javascript">  VK.loadParams(document.location.href);//для flashVars             <!-- For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. -->             var swfVersionStr = "10.0.0";            <!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. -->            var xiSwfUrlStr = "playerProductInstall.swf";            var flashvars = {            viewer_id: VK.params.viewer_id,            auth_key: VK.params.auth_key            };            var params = {};            params.quality = "high";            params.bgcolor = "#cd2727";            params.allowscriptaccess = "sameDomain";            params.allowfullscreen = "true";            params.wmode= "opaque";            var attributes = {};            attributes.id = "vktest";            attributes.name = "vktest";            attributes.align = "middle";            swfobject.embedSWF(                "vktest.swf", "flashContent",                 "100%", "100%",                 swfVersionStr, xiSwfUrlStr,                 flashvars, params, attributes);            <!-- JavaScript enabled so display the flashContent div in case it is not replaced with a swf object. -->            swfobject.createCSS("#flashContent", "display:block;text-align:left;");        </script>    </head>    <body>        <div id="flashContent">            <p>                To view this page ensure that Adobe Flash Player version                 10.0.0 or greater is installed.             </p>            <script type="text/javascript">                 var pageHost = ((document.location.protocol == "https:") ? "https://" : "http://");                 document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='"                                 + pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>" );             </script>         </div>                <noscript>            <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="vktest">                <param name="movie" value="vktest.swf" />                <param name="quality" value="high" /><param name="wmode" value="opaque"/>                <param name="bgcolor" value="#cd2727" />                <param name="allowScriptAccess" value="sameDomain" />                <param name="allowFullScreen" value="true" />                <!--[if !IE]>-->                <object type="application/x-shockwave-flash" data="vktest.swf" width="100%" height="100%"><param name="wmode" value="opaque"/>                    <param name="quality" value="high" />                    <param name="bgcolor" value="#cd2727" />                    <param name="allowScriptAccess" value="sameDomain" />                    <param name="allowFullScreen" value="true" />                <!--<![endif]-->                <!--[if gte IE 6]>-->                    <p>                         Either scripts and active content are not permitted to run or Adobe Flash Player version                        10.0.0 or greater is not installed.                    </p>                <!--<![endif]-->                    <a href="http://www.adobe.com/go/getflashplayer">                        <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" />                    </a>                <!--[if !IE]>-->                </object>                <!--<![endif]-->            </object>        </noscript>        </body></html>
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: IFrame. Переменные (getVariable и putVariable)

Сообщение bodnar »

копай в сторону externalInteface, но контакт не позволяет флешкам вызывать javascript методы (по крайней мере когда я пробовал было нельзя)
Аватара пользователя
Volgar
Сообщения: 113
Зарегистрирован: 26 авг 2010, 18:56

Re: IFrame. Переменные (getVariable и putVariable)

Сообщение Volgar »

копай в сторону externalInteface, но контакт не позволяет флешкам вызывать javascript методы (по крайней мере когда я пробовал было нельзя)
Спасибо, у меня получилось. Три дня назад пытался, но почему-то не было результата, а сегодня с утра заработало :)

Например для вызова окна перевода голосов iFrame приложения.
1. Создаем функцию в флэшке вызова ExternalInterface:

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

protected function payBtn_clickHandler(value:Number):void            {                ExternalInterface.call("sendToJavaScript", value);            }
где к value можно привязать несколько кнопок с разными значениями голосов (1, 3, 5)

2. В самом HTML который вызывает флэшку добавим вызов xd_connection.js?2 и функцию sendToJavaScript

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

<script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script><script type="text/javascript"> function sendToJavaScript(value) {          VK.init(function() {        VK.callMethod("showPaymentBox", value);    });     }</script>
Аватара пользователя
Volgar
Сообщения: 113
Зарегистрирован: 26 авг 2010, 18:56

Re: IFrame. Переменные (getVariable и putVariable)

Сообщение Volgar »

Да и не забудьте в флэш-приложении импортировать класс:

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

import flash.external.ExternalInterface;
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: IFrame. Переменные (getVariable и putVariable)

Сообщение bodnar »

оууу, у тебя iframe внутри которого флешка? ужас какой, зачем?
Аватара пользователя
Volgar
Сообщения: 113
Зарегистрирован: 26 авг 2010, 18:56

Re: IFrame. Переменные (getVariable и putVariable)

Сообщение Volgar »

bodnar писал(а):оууу, у тебя iframe внутри которого флешка? ужас какой, зачем?
По другому решить свою задачу не смог. У меня флэшка обращается постоянно к серверу - подгружает картинки, фоны, XML и т. п.

Теперь решил пойти дальше. Необходимо чтобы после внесения голосов на счет приложения автоматически происходило secure.withdrawVotes (списание голосов на счет приложения).
Возможно ли это сделать средствами JS? Если нет, то как вызвать PHP из JS и передать ему нужные параметры auth_key и viewer_id?
Аватара пользователя
Volgar
Сообщения: 113
Зарегистрирован: 26 авг 2010, 18:56

Re: IFrame. Переменные (getVariable и putVariable)

Сообщение Volgar »

И эта задача решена.

1. Добавляем callBack если юзер добавил голоса (при этом вызывается PHP скрипт который списывает голоса со счета юзера в приложении на счет приложения. Учтена возможность списания нескольких голосов, например по нажатию на разные кнопки) :

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

VK.addCallback("onBalanceChanged", onBalanceChanged);  function onBalanceChanged(value) { window.location = "http://mySite.com/vk/2.php?auth_key=" + flashvars.auth_key + "&viewer_id=" + flashvars.viewer_id+ "&votes=" + value;}
2. Файле 2.php принимаем переменные

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

    $auth_key  = $_GET['auth_key'];     $user_id = $_GET['viewer_id']; $votes = $_GET['votes'];
Проблема в том, что после этого метода моя флэшка заменяется выводом информации с php-файла. При этом на каком-то японском языке:)

100 テ鸙ⅲ 頌瑙
Аватара пользователя
Volgar
Сообщения: 113
Зарегистрирован: 26 авг 2010, 18:56

Re: IFrame. Переменные (getVariable и putVariable)

Сообщение Volgar »

Можно сделать костыль window.location.reload(true); чтобы приложение перегрузилось.
Ответить