JS和Flash互相调用Function不成功,请教高手

guoxiaopeng1982 2009-03-03 04:21:41
本人最近开始学习flash,需要用到js和flash互相调用function,根据资料使用FLash的ExternalInterface的call和addCallback方法,但是没有成功,本人使用的是Flash CS4,用的AS3.0,代码如下,请各位高手指点。
页面代码html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
<script language="JavaScript">
var jsReady = false;
function isReady() {
return jsReady;
}
function pageInit() {
jsReady = true;
}
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName];
} else {
return document[movieName];
}
}
function test(){
alert("成功!");
}
function cpu(){
thisMovie("2").jstest();
}
</script>
</head>
<body onLoad="pageInit();">
<table>
<tr>
<td>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="2" width="500" height="375"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
<param name="movie" value="2.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="sameDomain" />
<embed src="2.swf" quality="high" bgcolor="#869ca7"
width="500" height="375" name="2" align="middle"
play="true" loop="false" allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://get.adobe.com/flashplayer/">
</embed>
</object>
</td>
</tr>
<tr>
<td>
<input name="test" type="button" value="test" onclick="cpu();" />
</td>
</tr>
</table>
</body>
</html>

对于的flash代码,本人是在一个名叫2.fla的第一个图层上的第一帧添加动作,编辑的一下代码:
import flash.external.ExternalInterface;

var output:TextField=new TextField();//js调用状态显示文本
var readyTimer:Timer=new Timer(100,0);

if (ExternalInterface.available) {
try {
output.appendText(checkJavaScriptReady());
if (checkJavaScriptReady()) {
output.appendText("JavaScript is ready.\n");
ExternalInterface.call("test");
ExternalInterface.addCallback("jstest",jstest);
} else {
output.appendText("JavaScript is not ready, creating timer.\n");
readyTimer.addEventListener(TimerEvent.TIMER, timerHandler);
readyTimer.start();
}
} catch (error:SecurityError) {
output.appendText("A SecurityError occurred(安全错误): " + error.message + "\n");
} catch (error:Error) {
output.appendText("A SecurityError occurred(错误): " + error.message + "\n");
}
} else {
output.appendText("External interface不可用。");
};

function checkJavaScriptReady() {
var isReady:Boolean=ExternalInterface.call("isReady");
return isReady;
}


function timerHandler(event:TimerEvent):void {
var isReady:Boolean=checkJavaScriptReady();
if (isReady) {
ExternalInterface.addCallback("jstest",jstest);
Timer(event.target).stop();
}
}

function jstest():void {
ExternalInterface.call("test");
}

小弟在线求指导,谢谢
...全文
231 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoxiaopeng1982 2009-03-04
  • 打赏
  • 举报
回复
继续顶
行舟 2009-03-04
  • 打赏
  • 举报
回复
你js所调用的函数没有注册好·
guoxiaopeng1982 2009-03-04
  • 打赏
  • 举报
回复
现在的问题是js去调用flash的方法的时候,不行,说的是“为空或者不是对象”
guoxiaopeng1982 2009-03-03
  • 打赏
  • 举报
回复
顶上去,下班了,回家继续等高手解答
lxf2000104 2009-03-03
  • 打赏
  • 举报
回复
没有碰到过.帮顶
Roc_Lee 2009-03-03
  • 打赏
  • 举报
回复
帮顶
gengzhw 2009-03-03
  • 打赏
  • 举报
回复
推荐给高人
guoxiaopeng1982 2009-03-03
  • 打赏
  • 举报
回复
高手呢??急~~~
阿云ivan 2009-03-03
  • 打赏
  • 举报
回复
帮顶一下~

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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