求助 javascript 调用actionscript 失败

ydyn1988 2013-06-13 02:50:39
达人们帮忙看看,不胜感激

在javascript中调用 actionscript 总是 出现

Uncaught TypeError: Object #<HTMLObjectElement> has no method 'onShow'

就是一个简单的JS 调用 AC的脚本,点击按钮 会调用 callback

貌似可以获取到 object,控制台有输出 flex is [object HTMLObjectElement]
但调用 actionscript 就会出现:

Uncaught TypeError: Object #<HTMLObjectElement> has no method 'onShow'

as文件用mxmlc 可以正常编译成 swf文件

达人们帮忙看下是什么原因啊 不胜感激!

下面是 网页的body部分

<body>
<object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="300" height="200" id="showObj">
<param name="movie" value="Main.swf">
<param name="quality" value="high">
<embed src="Main.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="300" height="200" id="showEmbed" name="aha" >
</embed>

</object>

<tr>
<td>
<input type="input" id="jsinput"/><input type="button" value="点我看效果"/>
</td>
</tr>

</body>


javascript 脚本:

var jsReady = false;

function isReady(){

console.log("who call me");

return jsReady;
}

function init()
{
console.log("got load event");
jsReady = true;
}

function isConnectedFlex() {
console.log("some one call me");
var str = document.getElementById("showObj").getStringJS();
alert(str);
console.log(str);
}

function failCallback(){
console.log("actionscript failed ");
}

//JS调用AS
function callback(){

var flex = document.getElementById("showEmbed");

console.log("flex is " + flex);

console.log(flex.onShow("you see what"))

return;
}


actionscript 脚本

package {

import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.external.ExternalInterface;

public class Main extends Sprite {

public function Main():void {

if(ExternalInterface.available){

var ready:Boolean = isReady();

if(ready){

setupCallback();

}else{

var readyTimer:Timer = new Timer(100);

readyTimer.addEventListener(TimerEvent.TIMER, timerHandle);

readyTimer.start();
}
}else{
trace("External interface is not available for this container.");
}
}

public function getStringAS():String
{
return "Hello World!";
}

public function onShow(str:String):void {
trace("i got " + str)
}

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

private function setupCallback():void{
ExternalInterface.addCallback("onShow", onShow);
ExternalInterface.addCallback('getStringJS', getStringAS);
}

private function timerHandle(event:TimerEvent):void
{
var ready:Boolean = isReady();

if (ready)
{
Timer(event.target).stop();
setupCallback();
}
}
}
}
...全文
919 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

1,451

社区成员

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

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