[原]flash研究(三)——Falsh与JavaScript交互
2008-01-02 18:10
411 查看
一、getURL方法
在flash中可以用getURL方法来调用JS中的函数。
例:
var firstName:String = "Gus";
var lastName:String = "Richardson";
var age:Number = 92;
[b]注:
1) 当使用 getURL() 调用 JavaScript 时,url 参数最多只能包含 508 个字符。
2) 只有将falsh发布到网页上面,此方法才有效,直接在swf文件中调会报异常。
二、ExternalInterface接口
1) addCallback(methodName:String, instance:Object, method:Function) : Boolean
注册一个被js调的as方法。
methodName:从js中调用 as 函数时使用的名称。此名称不必与 as 方法的实际名称匹配。
instance:在该方法中被解析成的对象。此对象不一定是在其上可找到该方法的对象,可以指定任何对象(或 null)。
method: js中调用的 as方法。
2) call(MethodName:String, [Parameters:Object]) : Object
在flash中直接调用一个js函数。
这个方法有两个参数:
MethodName:你想要调用的javascript函数名要以字符串的形式。
Parameters:需要传递给javascript函数的参数,用逗号分开,是可选的。
三、实例
下面是在网上找的一个实例,加入了本人的整合、说明:
Flash代码:
import flash.external.*;
// 注册的方法名字,JavaScript将使用这个名字调用
var methodName:String = "send2AS";
var instance:Object = null;
// 实际调用的函数
var method:Function = receiveMsg;
// 返回值表示是否注册成功
var wasSuccessful:Boolean = ExternalInterface.addCallback(methodName, instance, method);
// 发送消息
var btnObj:Object = new Object();
//调JavaScript函数
//用getURL直接调JS
//初始化
init();
网页代码:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>as-js</title>
</script>
</head>
<body bgcolor="#cccccc">
<input id= "send_txt" type="text" value = "aaaaa"><input name="" value = "callFlash" type="button" onClick = "sendmsg();">
<div id = "jstxt"><div/>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="400" id="as_js" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="as-js.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#cccccc" />
<embed src="as-js.swf" quality="high" bgcolor="#cccccc" width="550" height="400" name="as-js" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>
运行效果:
var flashVideoPlayer;
function initialize()
2) 承载flash的html文件在本地运行会报错
[align=center][/align]
在网上查了一下,遇到这个问题的人相当多,也给出了一些解决的方法,我试了都没用,发布一下用http://地址浏览就没任何问题了。原因我也不是很清楚。有 高手知道,欢迎分享。
四、扩展
在做flash与js交互时遇到了这么一个问题:我要在调用承载flash的html页面时,通过URL将参数传递给html页面,html在加载flash时通过调用flash中的方法将参数传进flash来初始化flash。但这样每次在调用flash方法的时候都报异常说,对象或方法不可用(IE7中做的测试),原因是flash还没有加载上,当然不能调用其中的方法了,延时处理一下就好了。
例:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>DianLi</title>
</script>
</head>
<body style ="margin:-1px" scroll="no" >
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="100%" height="100%" id="DianLi" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="DianLi.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="DianLi.swf" quality="high" bgcolor="#ffffff" width="100%" height="100%" name="DianLi" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</script>
</body>
</html>
Flash与JavaScript交互的方法和常见的问题基本就这些了,另外还在网上找了一个第三方的Flash与JavaScript交互的工具JavaScriptFlashGateway,试了试总觉得没flash自身的ExternalInterface简单好用。如果还有其它的方法,请不吝共享。
在flash中可以用getURL方法来调用JS中的函数。
例:
var firstName:String = "Gus";
var lastName:String = "Richardson";
var age:Number = 92;
[b]注:
1) 当使用 getURL() 调用 JavaScript 时,url 参数最多只能包含 508 个字符。
2) 只有将falsh发布到网页上面,此方法才有效,直接在swf文件中调会报异常。
二、ExternalInterface接口
1) addCallback(methodName:String, instance:Object, method:Function) : Boolean
注册一个被js调的as方法。
methodName:从js中调用 as 函数时使用的名称。此名称不必与 as 方法的实际名称匹配。
instance:在该方法中被解析成的对象。此对象不一定是在其上可找到该方法的对象,可以指定任何对象(或 null)。
method: js中调用的 as方法。
2) call(MethodName:String, [Parameters:Object]) : Object
在flash中直接调用一个js函数。
这个方法有两个参数:
MethodName:你想要调用的javascript函数名要以字符串的形式。
Parameters:需要传递给javascript函数的参数,用逗号分开,是可选的。
三、实例
下面是在网上找的一个实例,加入了本人的整合、说明:
Flash代码:
import flash.external.*;
// 注册的方法名字,JavaScript将使用这个名字调用
var methodName:String = "send2AS";
var instance:Object = null;
// 实际调用的函数
var method:Function = receiveMsg;
// 返回值表示是否注册成功
var wasSuccessful:Boolean = ExternalInterface.addCallback(methodName, instance, method);
// 发送消息
var btnObj:Object = new Object();
//调JavaScript函数
//用getURL直接调JS
//初始化
init();
网页代码:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>as-js</title>
</script>
</head>
<body bgcolor="#cccccc">
<input id= "send_txt" type="text" value = "aaaaa"><input name="" value = "callFlash" type="button" onClick = "sendmsg();">
<div id = "jstxt"><div/>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="400" id="as_js" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="as-js.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#cccccc" />
<embed src="as-js.swf" quality="high" bgcolor="#cccccc" width="550" height="400" name="as-js" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>
运行效果:
var flashVideoPlayer;
function initialize()
2) 承载flash的html文件在本地运行会报错
[align=center][/align]
在网上查了一下,遇到这个问题的人相当多,也给出了一些解决的方法,我试了都没用,发布一下用http://地址浏览就没任何问题了。原因我也不是很清楚。有 高手知道,欢迎分享。
四、扩展
在做flash与js交互时遇到了这么一个问题:我要在调用承载flash的html页面时,通过URL将参数传递给html页面,html在加载flash时通过调用flash中的方法将参数传进flash来初始化flash。但这样每次在调用flash方法的时候都报异常说,对象或方法不可用(IE7中做的测试),原因是flash还没有加载上,当然不能调用其中的方法了,延时处理一下就好了。
例:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>DianLi</title>
</script>
</head>
<body style ="margin:-1px" scroll="no" >
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="100%" height="100%" id="DianLi" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="DianLi.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="DianLi.swf" quality="high" bgcolor="#ffffff" width="100%" height="100%" name="DianLi" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</script>
</body>
</html>
Flash与JavaScript交互的方法和常见的问题基本就这些了,另外还在网上找了一个第三方的Flash与JavaScript交互的工具JavaScriptFlashGateway,试了试总觉得没flash自身的ExternalInterface简单好用。如果还有其它的方法,请不吝共享。
相关文章推荐
- flash研究(三)——Falsh与JavaScript交互
- [AJAA]Asynchronization JavaScript And ActiveX WPF与Falsh交互 思想参考5
- [原]flash研究(二)——与asp.net服务交互(访问数据库)
- flash和javascript交互时 出现“对象不支持此属性或方法”错误的解决方法
- Javascript与flash交互通信控制的方法
- javascript和Flash ActionScript的交互(AS3)
- 网页javascript 与flash之间的交互
- [AJAA]Asynchronization JavaScript And ActiveX WinForm与Flash异步交互 思想参考6
- Flash 与 JavaScript的交互:使用SWFObject来嵌入Flash文件
- Flash与JavaScript信息交互
- javascript与flash函数相互交互
- Android通过javascript与flash动画交互
- Flash与JavaScript信息交互
- javascript与flash交互
- flash与javascript交互
- Javascript与flash交互通信控制的方法
- javascript与flash的通讯与交互
- Flash 与 JavaScript的交互总结
- 【ActionScript】Flash与网页的交互,ActionScript与JavaScript的交互
- Flash, JavaScript, PHP之间的交互