flash如何实现和js交互

2024-11-04 12:18:15

1、首先要会编程,JS和AS都要会。AS这边主要使用ExternalInterface类。简单来讲:调用JS的函数用ExternalInterface.callJS调用AS的方法要先通过 ExternalInterface.addCallback注册接收调用的函数名, 然后再通过JS语句调用: flash对象.注册的方法名()

flash如何实现和js交互

3、下面做一简要说明:getURL  getURL("javascript:history.go(-1)");通过URL协议来访问页面中的javascript,上面控制浏览器历史的代码很眼熟吧,诸如此类我们平时在定制页面收藏,发送邮件时都会经常使用这种方式。虽然你也可以调用页面中自己定义的JS函数,但我个人认为局限性还是比较大,函数的参数传递并不是很灵活,无返回值,而且只能实现AS调用JS,反之不行。

flash如何实现和js交互

5、SetVariable  上面两种方法都只能实现AS调用JS,而SetVariable恰恰相反,只要菀蒯踔观我们稍微做下处理,他就可以帮我们变相调用AS中的方法。大概思路如下:AS中设置一个状态变量,并使用Object的watch方法对其监视,JS通过SetVariable来修改这个状态变量,一旦侦测到了变量的改变,那就可以根据不同的状态值来选择执行AS中的相应函数了。如果需要考虑用户的低版本播放器,那么你可以考虑下该方法,个人认为还是比较灵活的。可以看出上面的这些做法都有一定的局限性,所以在我们的应用中很多时候都不得不将他们结合使用。而下面我要具体介绍的就是 ExternalInterface的做法,通过它你能轻松实现AS与JS的双向方法调用,从而也解决了双向的变量访问,详细介绍可参见FLASH帮助文档和Adobe的官方教程,下面用两个简单例子来说明ExternalInterface的使用。

flash如何实现和js交互

7、JS调用AS的方法(实例演示)FLASH中代码://导入包import flash.external.*;//提供JS访问的函数名var _method:String = "say";//指定本地函数中this变量的作用域,可设置为null留空var e_area:Object = null;//AS内部函数名var method:Function = say;//将函数注册到容器列表var wasSuccessful:Boolean = ExternalInterface.addCallback(_method, e_area, method);//查看注册是否成功if(wasSuccessful){result_txt.text = "函数注册成功";}//本地的函数function say(txt:String) {result_txt.text = txt;}Html中代码:<div><form><input type="button" onclick="callExternalInterface()" value="JS调用AS方法" /></form><script>function callExternalInterface() {thisMovie("demo").say("Hello,World");}//浏览器兼容访问DOMfunction thisMovie(movieName) {if (navigator.appName.indexOf("Microsoft") != -1) {return window[movieName]}else {return document[movieName]}}</script></div>其中红色代码是核心代码,其作用原理是AS端通过addCallback函数把AS内部定义的方法注册为可从容器中调用,允许自定义另外一个方法名供 JS来调用这个方法,函数调用成功返回true,失败返回flase,在此例中通过wasSuccessful变量来判断函数是否注册成功。函数注册成功以后,JS可以通过DOM来访问SWF对象,然后直接调用预定义的方法即可。

flash如何实现和js交互
猜你喜欢