IFrame + flash
IFrame + flash
http://flapps.ru/forum/topic1343.html
Подскажите как вызвать эту HTML, если само приложение flash? Например, по клику на кнопку. Ну и передать и получить все эти переменные. Пробовал использовать HTTP Service, но никакой реакции.
Подскажите как вызвать эту HTML, если само приложение flash? Например, по клику на кнопку. Ну и передать и получить все эти переменные. Пробовал использовать HTTP Service, но никакой реакции.
Re: IFrame. Переменные (getVariable и putVariable)
Александр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>
Re: IFrame. Переменные (getVariable и putVariable)
копай в сторону externalInteface, но контакт не позволяет флешкам вызывать javascript методы (по крайней мере когда я пробовал было нельзя)
Re: IFrame. Переменные (getVariable и putVariable)
Спасибо, у меня получилось. Три дня назад пытался, но почему-то не было результата, а сегодня с утра заработалокопай в сторону externalInteface, но контакт не позволяет флешкам вызывать javascript методы (по крайней мере когда я пробовал было нельзя)
Например для вызова окна перевода голосов iFrame приложения.
1. Создаем функцию в флэшке вызова ExternalInterface:
Код: Выделить всё
protected function payBtn_clickHandler(value:Number):void { ExternalInterface.call("sendToJavaScript", value); }
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>
Re: IFrame. Переменные (getVariable и putVariable)
Да и не забудьте в флэш-приложении импортировать класс:
Код: Выделить всё
import flash.external.ExternalInterface;
Re: IFrame. Переменные (getVariable и putVariable)
оууу, у тебя iframe внутри которого флешка? ужас какой, зачем?
Re: IFrame. Переменные (getVariable и putVariable)
По другому решить свою задачу не смог. У меня флэшка обращается постоянно к серверу - подгружает картинки, фоны, XML и т. п.bodnar писал(а):оууу, у тебя iframe внутри которого флешка? ужас какой, зачем?
Теперь решил пойти дальше. Необходимо чтобы после внесения голосов на счет приложения автоматически происходило secure.withdrawVotes (списание голосов на счет приложения).
Возможно ли это сделать средствами JS? Если нет, то как вызвать PHP из JS и передать ему нужные параметры auth_key и viewer_id?
Re: IFrame. Переменные (getVariable и putVariable)
И эта задача решена.
1. Добавляем callBack если юзер добавил голоса (при этом вызывается PHP скрипт который списывает голоса со счета юзера в приложении на счет приложения. Учтена возможность списания нескольких голосов, например по нажатию на разные кнопки) :
2. Файле 2.php принимаем переменные
Проблема в том, что после этого метода моя флэшка заменяется выводом информации с php-файла. При этом на каком-то японском языке:)
100 テ鸙ⅲ 頌瑙
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;}
Код: Выделить всё
$auth_key = $_GET['auth_key']; $user_id = $_GET['viewer_id']; $votes = $_GET['votes'];
100 テ鸙ⅲ 頌瑙
Re: IFrame. Переменные (getVariable и putVariable)
Можно сделать костыль window.location.reload(true); чтобы приложение перегрузилось.