Samuraix
16.10.2011, 16:05
Здравствуйте!
Есть такой код в as3:
if (ExternalInterface.available)
{
ExternalInterface.addCallback("sendScores", onGetScores);
//...
}
//...............................
private function onGetScores(s:String):void
{
ExternalInterface.call("alert", "onget");
var tmp:Object = JSON.decode(s);
if (tmp.status == "success")
{
playerScore = tmp.scores;
playerTries = tmp.remaining_attempts;
}
//....
}
Код html-страницы (сорри, но нет тут вроде подсветки html, или я не нашел):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>CoinGame</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css" media="screen">
html, body { height:100%; background-color: #ffffff;}
body { margin:0; padding:0; overflow:hidden; }
#flashContent { width:100%; height:100%; }
</style>
</head>
<script language="javascript">
function flash_SetScores(gameid, scores)
{
$.ajax({
url: ServerName + "loadModule.php?module_name=scores&action=set&gid=" + gameid + "&scores=" + scores,
success: flash_GetResponse
});
}
function flash_GetScores()
{
$.ajax({
url: ServerName + "loadModule.php?module_name=scores&action=get",
success: flash_GetResponse
});
}
function flash_GetResponse(_data)
{
alert(thisMovie("CoinGame"));
thisMovie("CoinGame").sendScores(_data);
}
function thisMovie(movieName)
{
if (navigator.appName.indexOf("Microsoft") != -1)
return window[movieName];
else
return document[movieName];
}
</script>
<body>
<div id="flashContent">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="800" height="600" id="CoinGame" align="middle">
<param name="movie" value="CoinGame.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="window" />
<param name="scale" value="showall" />
<param name="menu" value="true" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name="allowScriptAccess" value="always" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="CoinGame.swf" width="800" height="600">
<param name="movie" value="CoinGame.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="window" />
<param name="scale" value="showall" />
<param name="menu" value="true" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name="allowScriptAccess" value="always" />
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflash">
<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>
</div>
</body>
</html>
Проблема в том, что в IE 8 коллбэк срабатывает и передаются нужные значения (хотя, кстати ExternalInterface.call("alert", "onget") не показывается). А вот через мозиллу вообще не дергается коллбэк из js в as3. В чем может быть такая проблема? Спасибо.
Есть такой код в as3:
if (ExternalInterface.available)
{
ExternalInterface.addCallback("sendScores", onGetScores);
//...
}
//...............................
private function onGetScores(s:String):void
{
ExternalInterface.call("alert", "onget");
var tmp:Object = JSON.decode(s);
if (tmp.status == "success")
{
playerScore = tmp.scores;
playerTries = tmp.remaining_attempts;
}
//....
}
Код html-страницы (сорри, но нет тут вроде подсветки html, или я не нашел):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>CoinGame</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css" media="screen">
html, body { height:100%; background-color: #ffffff;}
body { margin:0; padding:0; overflow:hidden; }
#flashContent { width:100%; height:100%; }
</style>
</head>
<script language="javascript">
function flash_SetScores(gameid, scores)
{
$.ajax({
url: ServerName + "loadModule.php?module_name=scores&action=set&gid=" + gameid + "&scores=" + scores,
success: flash_GetResponse
});
}
function flash_GetScores()
{
$.ajax({
url: ServerName + "loadModule.php?module_name=scores&action=get",
success: flash_GetResponse
});
}
function flash_GetResponse(_data)
{
alert(thisMovie("CoinGame"));
thisMovie("CoinGame").sendScores(_data);
}
function thisMovie(movieName)
{
if (navigator.appName.indexOf("Microsoft") != -1)
return window[movieName];
else
return document[movieName];
}
</script>
<body>
<div id="flashContent">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="800" height="600" id="CoinGame" align="middle">
<param name="movie" value="CoinGame.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="window" />
<param name="scale" value="showall" />
<param name="menu" value="true" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name="allowScriptAccess" value="always" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="CoinGame.swf" width="800" height="600">
<param name="movie" value="CoinGame.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="window" />
<param name="scale" value="showall" />
<param name="menu" value="true" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name="allowScriptAccess" value="always" />
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflash">
<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>
</div>
</body>
</html>
Проблема в том, что в IE 8 коллбэк срабатывает и передаются нужные значения (хотя, кстати ExternalInterface.call("alert", "onget") не показывается). А вот через мозиллу вообще не дергается коллбэк из js в as3. В чем может быть такая проблема? Спасибо.