求助 javascript 调用actionscript 失败
达人们帮忙看看,不胜感激
在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();
}
}
}
}