`
hereson
  • 浏览: 1428043 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

JavaScript与ActionScript函数相互调用

阅读更多

1、在JavaScript中调用Flex(ActionScript)方法
在Flex中可以用ExternalInterface来调用Flex的方法。
在Flex应用中通过调用addCallback()可以把一个方法添加到列表中。addCallback将一个ActionScript的方法注册为一个JavaScript和VBScript可以调用的方法。
addCallback()函数的定义如下:
addCallback(function_name:String, closure:Function):void
function_name参数就是在Html页面中脚本调用的方法名。closure参数是要调用的本地ActionScript方法,这个参数可以是一个方法也可以是对象实例。

例子:
<mx:Script>
    import flash.external.*;
    public function asFunc():String {
        return "Hello Flex";
    }
    public function initApp():void {
        ExternalInterface.addCallback("flexFunctionAlias",asFunc);
    }
</mx:Script>
那么在Html页面中,先获得SWF对象的引用,也就是用<object .../>声明的Swf的Id属性,比如说是MyFlexApp。然后就可以用以下方式调用Flex中的方法。
<SCRIPT language='JavaScript' charset='utf-8'>
    function callApp() {
        var x = MyFlexApp.flexFunctionAlias();
        alert(x);
    }
</SCRIPT>
<button >Call App</button>

2、在Flex(ActionScript)中调用 JavaScript(后面有实例)
在Flex中调用JS代码就方便得多。你可以调用Html页面中的JavaScript,通过与JavaScript的交互,可以改变Style,调用远程方法。还可以将数据传递给Html页面,处理后再返回给Flex,完成这样的功能主要有两种方法:ExternalInterface()和navigateToUrl()。
在Flex中调用JavaScript最简单的方法是使用ExternalInterface(),可以使用此API调用任意JavaScript,传递参数,获得返回值,如果调用失败,Flex抛出一个异常。
ExternalInterface封装了对浏览器支持的检查,可以用available属性来查看。
ExternalInterface的使用非常简单,语法如下:
flash.external.ExternalInterface.call(function_name: String[, arg1, ...]):Object;
参数function_name是要调用的JavaScript的函数名,后面的参数是JavaScript需要的参数。
举个例子说明如何调用JavaScript函数
Flex应用中,添加如下方法:
<mx:Script>
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        import flash.external.*;
   
        public function callWrapper():void {
            var f:String = "changeDocumentTitle";
            var m:String = ExternalInterface.call(f,"New Title");
            trace(m);
        }
    </mx:Script>
    <mx:Button label="Change Document Title" click="callWrapper()"/>
</mx:Application>
Html页面中有如下函数定义:
<SCRIPT LANGUAGE="JavaScript">
    function changeDocumentTitle(a) {
        window.document.title=a;
        return "successful";
    }
</SCRIPT>

应用例子
1。在Flex程序中打开一个浏览器窗口
在线演示 | 源码下载

//---CallJSApp.mxml

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" viewSourceURL="srcview/index.html">

      <mx:Script>

            <![CDATA[

                  import mx.validators.ValidationResult;

                  import cwmlab.util.*;                 

                  private function openBrowser():void

                  {

                        MyURLUtil.openWindow("http://www.google.com/");

                  }                                  

            ]]>

      </mx:Script>

      <mx:HBox width="100%">

            <mx:Button label="open" click="openBrowser()"/>      

      </mx:HBox>     

</mx:Application>

//--MyURLUtil.as


package cwmlab.util

{   

      import flash.external.ExternalInterface;   

      public class MyURLUtil   

      {       

            protected static const WINDOW_OPEN_FUNCTION : String = "window.open";

           

            public static function openWindow(url : String, window : String = "_blank",

                  features : String = "") : void{

                  ExternalInterface.call(WINDOW_OPEN_FUNCTION, url, window, features);       

          }

      }

}// ActionScript file

 

分享到:
评论

相关推荐

    SWF(ActionScript3.0)与JavaScipt(JS)通信示例

    今天花了一些时间整理出来了Swf 文件与JavaScript通信的示例,在此贴出供大家参考。 在ActionScript3.0与JavaScipt通信的时候需要用到...ActionScript函数可以返回一个值,JavaScript会立即接收它作为该调用的返回值。

    Javascript 调用 ActionScript 的简单方法

    1. 在Flex中,ActionScript调用Javascript是比较简单的,说白了就是,在html里,怎么调用Javascript,在ActionScript就怎么调用就可以了 2. 如果用js调用as,就稍微麻烦一点,其实也比较简单 MXML代码: &lt;?xml ...

    js调用as函数方法例子

    js调用flex的ActionScript函数方法例子

    ActionScript开发技术大全

    26.1.2ActionScript与JavaScript交互 566 26.1.3ActionScript与桌面程序交互 567 26.2网页脚本交互示例 568 26.3桌面应用交互示例 571 26.4小结 573 第27章ActionScript打印控制 574 27.1使用打印作业对象 574 ...

    flashcam:网络摄像头视频捕获,从 ActionScript 到 JavaScript

    当用户在 Flash 上“ cameraUnmuted静音”网络摄像头时,库会调用cameraUnmuted JavaScript 函数: var camera, canvas, context, imageData, pixels;function cameraUnmuted(){ camera = document.getElementById...

    aardio工具解压版

    因为 aardio奇特的语言特性,aardio的胶水能力极强,在aardio中可以非常方便的调用C语言、C++、C#、Java、Python、Javascript、Node.Js、Flash ActionScript、PHP、VBScript、NewLISP、Delphi、Go语言 .........

    flash javascript之间的通讯方法小结

    不用getURL和fsCommand方法 flash使用的actionscript跟javascript是非常相通的,下面描述如何互相调用函数: 1:javascript调用flash中的函数 在flash的脚本中增加 import flash.external.ExternalInterface;...

    flash与java交互的方法

    将 ActionScript 方法注册为可从容器调用。成功调用 addCallBack() 后,容器中的 JavaScript 或 ActiveX 代码可以调用在 Flash Player 中注册的函数。

    ByteArray.js:等效于ActionScript 3的ByteArray for Javascript,支持AMF0和AMF3

    数据与ByteArray字节流共享,从而允许您通过调用ByteArray的构造函数来直接进行处理,这非常方便。 十进制值 该库还支持IEEE 754值,以防您需要使某些对象浮点数。 压缩和解压缩 ByteArray.js可以满足您的要求! ...

    aardio帮助文档

    因为 aardio奇特的语言特性,aardio的胶水能力极强,在aardio中可以非常方便的调用C语言、C++、C#、Java、Python、Javascript、Node.Js、Flash ActionScript、PHP、VBScript、NewLISP、Delphi、Go语言 .........

    107个常用javascript语句

    47.当在超链接中调用JS函数时用:(javascript :)来开头后面加函数名 48.在老的浏览器中不执行此JS:&lt;!-- //--&gt; 49.引用一个文件式的JS:&lt;script type="text/javascript" src="aaa.js"&gt; 50.指定在不支持脚本的浏览器显示...

    flex3的cookbook书籍完整版dpf(包含目录)

    20.4节在JavaScript中调用ActionScript方法函数 20.5节经由BrowserManager改变HTML页面标题 20.6节BrowserManager解析URL 20.7节经由BrowserManager深度-链接到数据 20.8节经由BrowserManager深度-链接容器 20.9节...

    Flex企业应用开发实战源代码

    10.1.2 使用navigateToURL方法调用JavaScript 302 10.1.3 ExternalInterface API 303 10.2 在Flex中使用Flash CS所开发的控件 306 10.3 Flex访问.Net 308 10.3.1 Fluorine的安装和配置 309 10.3.2 Flex通过...

    HTML5Lib:HTML5Lib-在HTML5 AdCreation和AdServing中使用的脚本集合

    因此,集成在Flash中的ActionScript可以轻松访问网站上的所有必要信息,并调用在此注册的Javascript函数和方法。 HTML5 AD是一个HTML文档,就像网站本身一样,是通过iFrame集成到HTML文档中的。 因此,iFrame是...

    java开源包1

    提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java...

    深入浅析Jsonp解决ajax跨域问题

    一、介绍 最近跨域问题比较多,而且自己刚好也看到这一块,就总结了一下,关于JSONP的东西百度的话东西确实很多...不同源的客户端脚本(JavaScript、ActionScript)在没明确授权的情况下,不能读写对方的资源。 2、JSONP

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现 ,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    java开源包11

    提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java...

Global site tag (gtag.js) - Google Analytics