关于flash as脚本和web的通讯问题

HengStar 2010-06-17 04:46:08
我想实现as脚本和web的接口互调通信,今天上网搜了下可以在as中通过ExternalInterface.call调用外部(如javascript之类)的函数,我在Flash中第一帧写了如下代码

function cn(n)
{
numberAni.text = (Math.random()*n).toString();
}

function lp(m)
{
if(ExternalInterface.available)
{
ExternalInterface.call("getNumber");
setInterval(cn, 100, 15);
}
else
{
setInterval(cn, 100, 99);
trace("NONO");
}
}

btn_Start.addEventListener(MouseEvent.CLICK,lp);


html中的代码如下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ExternalInterfaceExample</title>
<script language="JavaScript">
function getNumber()
{
alert("!!!!");
return 15;
}

var jsReady = false;
function isReady() {
return jsReady;
}
function pageInit() {
jsReady = true;
document.forms["form1"].output.value += "\n" + "JavaScript is ready.\n";
}
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName];
} else {
return document[movieName];
}
}
function sendToActionScript(value) {
thisMovie("ExternalInterfaceExample").sendToActionScript(value);
}
function sendToJavaScript(value) {
document.forms["form1"].output.value += "ActionScript says: " + value + "\n";
}
</script>
</head>
<body onload="pageInit();">

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="testAs" name="testAs" width="500" height="375"
>
<param name="movie" value="testAs.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="always" />
<embed src="testAs.swf" quality="high" bgcolor="#869ca7" id="testAs" name="testAs"
width="500" height="375" align="middle"
play="true" loop="false" quality="high" allowScriptAccess="always"
type="application/x-shockwave-flash"
>
</embed>
</object>

<form name="form1" onsubmit="return false;">
<input type="text" name="input" value="" />
<input type="button" value="Send" onclick="sendToActionScript(this.form.input.value);" /><br />
<textarea cols="60" rows="20" name="output" readonly="true">Initializing...</textarea>
</form>

</body>
</html>


但是我单击按钮时始终没有反应,也就是没有调用getNumber,并且后面的代码页没有如期执行了,但是如果把ExternalInterface.call("getNumber");注释了就可以执行后面的setInterval,我不知道问题出在哪,我是IE7的浏览器
...全文
122 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
HengStar 2010-06-18
  • 打赏
  • 举报
回复
还有别的回答吗?
xingjunli 2010-06-17
  • 打赏
  • 举报
回复
楼主可参考我的flex交互系列文章,希望对你有帮助
diffmaker 2010-06-17
  • 打赏
  • 举报
回复
应该是安全沙箱的问题。我将文件加入信任后,在IE6中测试可以
diffmaker 2010-06-17
  • 打赏
  • 举报
回复
这个是帮助文档中的示例吧?
HengStar 2010-06-17
  • 打赏
  • 举报
回复
补充问一句~
还有别的办法可以让flash和web之间很好的通讯的方法吗?
我是用asp.net

2,275

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 Flash流媒体开发
社区管理员
  • Flash流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧