gpt4 book ai didi

javascript - 通过 Javascript 访问 ActionScript 函数

转载 作者:数据小太阳 更新时间:2023-10-29 05:16:50 25 4
gpt4 key购买 nike

我正在尝试使用 ExternalInterface.addCallback API 在 ActionScript 中调用一个函数,但我似乎无法让它工作。这是我拥有的:

ActionScript :

//MyClass.as  
package {

import flash.display.Sprite;
import flash.external.ExternalInterface;

public class MyClass extends Sprite
{
public function MyClass()
{
ExternalInterface.addCallback('getStringJS', getStringAS);
}

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

注意:如果重要的话,我正在使用 flex mxmlc 编译器将其编译成 swf。

HTML/Javascript:

<!doctype html>
<html>
<head>
<title>User Identification</title>
<head>
<body>
<object id="MyClass" name="MyClass" type="application/x-shockwave-flash" data="MyClass.swf" width="1" height="1">
<param name="movie" value="MyClass.swf">
<embed src="MyClass.swf" width="1" height="1">
</object>
<script type="text/javascript">
var flash = document.getElementById("MyClass");
var str = flash.getStringJS();
alert(str);
</script>
</body>
</html>

我得到的错误是:

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

我还尝试添加超时以防 swf 文件未加载,但我也没有成功使用该方法。

有什么想法吗?

干杯,
迈克

最佳答案

我想通了。通过 ExternalInterface.call 向 javascipt 发送信号的关键方法,因此我们可以确定 swf 已加载。最“通用”的方法如下:

MyClass.as

//MyClass.as  
package {

import flash.display.Sprite;
import flash.external.ExternalInterface;

public class MyClass extends Sprite
{
public function MyClass()
{
ExternalInterface.addCallback('getStringJS', getStringAS);
if (ExternalInterface.available) {
ExternalInterface.call("isConnectedFlex");
}
}

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

index.html

<!doctype html>
<html>
<head>
<title>User Identification</title>
<head>
<body>
<object id="MyClass" name="MyClass" type="application/x-shockwave-flash" data="MyClass.swf" width="1" height="1">
<param name="movie" value="MyClass.swf">
<embed src="MyClass.swf" width="1" height="1">
</object>
<script type="text/javascript">

var flash = document.getElementById("MyClass");

function isConnectedFlex() {
var str = flash.getStringJS();
alert(str);
}


</script>
</body>
</html>

关于javascript - 通过 Javascript 访问 ActionScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6208561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com