调用 flex-AS 函数时出现 Javascript 错误
我正在尝试从 JS 调用调用操作脚本函数,但收到以下错误
Error: getFlashMovie(swfobjectID).sayWhat is not a function
任何人都可以让我知道我在这里做错了什么
<html>
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="myMovieName" WIDTH="225" HEIGHT="200">
<PARAM NAME="movie" VALUE="ax.swf" /> <PARAM NAME="quality" VALUE="high" /> <PARAM NAME="bgcolor" VALUE="#FFFFFF" /> <EMBED href="ax.swf" src="ax.swf" quality=high bgcolor=#FFFFFF NAME="myMovieName" ALIGN="" TYPE="application/x-shockwave-flash"> </EMBED> </OBJECT>
<script>
function getFlashMovie(movieName) {
alert("In get Flash Movie");
document.getElementById(movieName).setAttribute("name", movieName);
var isIE = navigator.appName.indexOf("Microsoft") != -1;
return (isIE) ? window[movieName] : document[movieName];
}
function sayWhat()
{
alert("In call as");
var swfobjectID = 'myMovieName';
alert(swfobjectID);
//call flex function
getFlashMovie(swfobjectID).sayWhat();
}
</script>
<input type="button" onclick="javascript:sayWhat();" value="Click Me" />
</html>
MXML
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initCamera()">
<mx:Script>
<![CDATA[
import mx.controls.Button;
import mx.controls.Alert;
import flash.display.InteractiveObject;
import flash.display.Sprite;
import flash.media.*;
import flash.net.*;
import flash.external.*;
import flash.external.ExternalInterface;
public function sayWhat():void {
Alert.show("Hi");
}
public function initCamera():void {
//stop();
ExternalInterface.addCallback("sayWhat", sayWhat);
}
]]>
</mx:Script>
</mx:Application>
I am trying to call call action script function from JS but i get the following error
Error: getFlashMovie(swfobjectID).sayWhat is not a function
Can any body let me know what am i doing wrong here
<html>
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="myMovieName" WIDTH="225" HEIGHT="200">
<PARAM NAME="movie" VALUE="ax.swf" /> <PARAM NAME="quality" VALUE="high" /> <PARAM NAME="bgcolor" VALUE="#FFFFFF" /> <EMBED href="ax.swf" src="ax.swf" quality=high bgcolor=#FFFFFF NAME="myMovieName" ALIGN="" TYPE="application/x-shockwave-flash"> </EMBED> </OBJECT>
<script>
function getFlashMovie(movieName) {
alert("In get Flash Movie");
document.getElementById(movieName).setAttribute("name", movieName);
var isIE = navigator.appName.indexOf("Microsoft") != -1;
return (isIE) ? window[movieName] : document[movieName];
}
function sayWhat()
{
alert("In call as");
var swfobjectID = 'myMovieName';
alert(swfobjectID);
//call flex function
getFlashMovie(swfobjectID).sayWhat();
}
</script>
<input type="button" onclick="javascript:sayWhat();" value="Click Me" />
</html>
MXML
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initCamera()">
<mx:Script>
<![CDATA[
import mx.controls.Button;
import mx.controls.Alert;
import flash.display.InteractiveObject;
import flash.display.Sprite;
import flash.media.*;
import flash.net.*;
import flash.external.*;
import flash.external.ExternalInterface;
public function sayWhat():void {
Alert.show("Hi");
}
public function initCamera():void {
//stop();
ExternalInterface.addCallback("sayWhat", sayWhat);
}
]]>
</mx:Script>
</mx:Application>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是一个工作示例应用程序,它从 javascript 调用 Flex sayWhat 函数。
它包含 4 个文件:
ax.mxml
、call_flfunc.html
、ax.js
和ax.css
。< br>您应该将最后三个文件和生成的 ax.swf 文件放在 Web 服务器上的同一文件夹中(或修改它们引用的路径),它将起作用。
ax.mxml:主 Flex 应用程序的结构
call_flfunc.html:嵌入 ax.swf 的 html 内容
ax.js:包含所有必需的 javascript 类和函数
ax.css:应用于
call_flfunc.html
页面的样式表我希望它是可以理解的,您可以从中进行工作。
Here is a working sample application that calls your flex sayWhat funciton from javascript.
It contains 4 files:
ax.mxml
,call_flfunc.html
,ax.js
andax.css
.You should put the last three files and the generated ax.swf file in the same folder on your web server (or modify their path where they are referenced), and it will work.
ax.mxml: your main flex application's structure
call_flfunc.html: the html content into which the ax.swf is embedded
ax.js: contains all the necessary javascript classes and functions
ax.css: the style sheet applied to the
call_flfunc.html
pageI hope it's understandable, and you can work from it.
您可能需要在 js 中使用其他类型的解决方法来从任何浏览器调用 flash 函数。
在这里我分享我的实现方法(希望它还没有被弃用......)。你需要一个 javascript 类(我将其命名为 FO):
你将需要一个初始化方法(或扩展现有的方法):
以及调用所需的方法:
You might need an other kind of workaround in js to call the flash function from any browser.
Here i share my way to accomplish this (hope it is not deprecated yet...). You need a javascript class (i named it FO):
You will need an initialization method (or extend the existing one):
and for calling the desired method:
从 javascript 调用时尝试:
When calling from javascript try: