在公司遇到了ActionScript调用Java的需求,所以大概了解了一下:

一般基本是分成了三块,本身flash的项目,ActionScript的库,Java的库

通信方式一般有两种:

一.ActionScript直接通过Call方法来调用Native的代码:

1.(1).如上图,ActionScript的库作为项目与Java之间的桥梁

对于ActionScript库,ExtensionContext是它的核心类,一直都是由它来负责与java层之间的调用

然后通过ExtensionContext的实例instance的call()方法来调用Java中的方法:

(注意,下面的call里面的login可以认为是java层里面的重写FREContext类getFunctions()中对应的键)

(2).对于被调用的Java库:

它的入口是FREExtension,需要重写createContext()方法来获取本地代码上下文,也就是自己拓展的FREContext子类

FREFunction则是Java本地方法的具体实现,实例化之后可以以键值对的方法存入FREContext的getFunctions()中去,

call()方法就是通过传入对应键值来调起本地方法。

2.对于Java端有返回的方法,可以直接在AS端拿到返回值,再重新用FREObject包装一下:

在AS的library端:

二.Native代码直接向ActionScript代码抛出事件:(其实主要是分为派发事件,侦听事件和处理事件三个部分)

1.派发事件:

2.在ActionScript处侦听事件以及处理事件:

  1. import flash.events.Event;
  2. import flash.events.EventDispatcher;
  3. import flash.events.StatusEvent;
  4. import flash.external.ExtensionContext;
  5.  
  6. public class WenverPay extends EventDispatcher
  7. {
  8. private static var content:ExtensionContext;
  9.  
  10. public static const KEY_UPDATECOMPLETE_CODE:String = "UpdateConfigParamsComplete";
  11.  
  12. private static function init():void
  13. {
  14. content = Context.getInstance();
  15. }
  16.  
  17. private function onStatus(event:StatusEvent):void
  18. {
  19. switch(event.code)
  20. {
  21. case KEY_UPDATECOMPLETE_CODE:
  22. {
  23. var e:Event = new Event(KEY_UPDATECOMPLETE_CODE);
  24. dispatchEvent(e);
  25.  
  26. break;
  27. }
  28. default:
  29. {
  30. break;
  31. }
  32. }
  33. }
  34.  
  35. public function setUpdateSuccess(updateComplete:Function):void
  36. {
  37. init();
  38. content.addEventListener(StatusEvent.STATUS, onStatus);
  39. }
  40.  
  41. }

关于ActionScript在Java调用上的一些原理的更多相关文章

  1. Java文件上传下载原理

    文件上传下载原理 在TCP/IP中,最早出现的文件上传机制是FTP.它是将文件由客户端发送到服务器的标准机制. 但是在jsp编程中不能使用FTP方法来上传文件,这是由jsp运行机制所决定的 文件上传原 ...

  2. java调用机器上的shell脚本

    java调用机器上的shell脚本,可以这样方便的通过shell脚本调用本机的C.C++等程序 Process process = null; Runtime runTime = Runtime.ge ...

  3. Linux系统上java调用C++ so库文件

      PART1:     java中使用jna替代jni调用c++/c生成的 dll/so库文件需要做的事项 1.引入JNA依赖或者直接下载JNAjar包           <!-- http ...

  4. 【Java心得总结五】Java容器上——容器初探

    在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...

  5. 【Java心得总结三】Java泛型上——初识泛型

    一.函数参数与泛型比较 泛型(generics),从字面的意思理解就是泛化的类型,即参数化类型.泛型的作用是什么,这里与函数参数做一个比较: 无参数的函数: public int[] newIntAr ...

  6. 存储过程详解与java调用(转)

    存储过程的一些基本语法: --------------创建存储过程----------------- CREATE PROC [ EDURE ] procedure_name [ ; number ] ...

  7. 分享:写了一个 java 调用 C语言 开发的动态库的范例

    分享:写了一个 java 调用 C语言 开发的动态库的范例 cfunction.h   代码#pragma once#ifdef __cplusplusextern "C" {#e ...

  8. java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊

    java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊 java 调用 C# 类库搞定,可以调用任何类及方法,很简单,非常爽啊 总体分三步走: 一.准备一个 C# 类库 (d ...

  9. ZH奶酪:Java调用NLPIR汉语分词系统

    NLPIR工具 支持自定义词表: 可以离线使用: 下载地址:http://ictclas.nlpir.org/newsdownloads?DocId=389 在线演示:http://ictclas.n ...

随机推荐

  1. Android学习笔记(二)Git和Github

    一.添加SSH Key ssh-keygen -t rsa -C "email@example.com" 遇到提示只需要一直确认.用户目录(如/root)下会生成一个.ssh文件夹 ...

  2. Nuget 学习一

    初识Nuget 对应C#开发的人员来说, DLL和相关的引用 并不陌生吧,通过手动拷贝DLL 存在很多问题, 比如SOA的实体DLL,开发者和使用者的DLL不一致,就可能存在字段的不一致, 通过Nug ...

  3. spring boot maven 插件

    spirng boot 需要使用专用maven插件打包,才能打包.引入如下. <build>        <plugins>            <plugin> ...

  4. Ubuntu中Qt新建窗体提示lGL错误

    提示错误: cannot find -lGL collect2:error:ld returned 1 exit status 这是因为系统缺少链接库,终端输入: sudo apt-get insta ...

  5. WPF和Winform的一些界面控件

    DevExpressTelerikMahApps.MetroModern UI for WPFModernWPFExtended WPF Toolkit™ Community EditionModer ...

  6. for for-in foreach 循环

    var a = [1, 2, 3, 4, 5] //for用来便利数组元素非常简单 for (var i = 0; i < a.length; i++) { console.log(a[i]) ...

  7. 重要的几个热键[Tab], [ctrl]-c, [ctrl]-d

    来源于:鸟哥的Linux私房菜 在继续后面的章节之前,这里很需要跟大家再来报告一件事,那就是我们的文字模式里头具有很多的功能按键, 这些按键可以辅助我们进行指令的编写与程序的中断呢!这几个按键请大家务 ...

  8. TCP connect EADDRNOTAVAIL(99)错误原因分析

    转自:http://blog.chinaunix.net/uid-20662820-id-3371081.html 关于TCP connect 返回错误99,可以能大家都会遇到,这里就分析一下这个错误 ...

  9. Js的Url中传递中文参数乱码的解决

    一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: 2. 接收参数页面:test02.html 二:如何获取Url& ...

  10. URLEncode编码和URLDecode解码

    String text1 = java.net.URLEncoder.encode("中国" ,"utf-8" ); String text2 = java.n ...