在公司遇到了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处侦听事件以及处理事件:

 import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.StatusEvent;
import flash.external.ExtensionContext; public class WenverPay extends EventDispatcher
{
private static var content:ExtensionContext; public static const KEY_UPDATECOMPLETE_CODE:String = "UpdateConfigParamsComplete"; private static function init():void
{
content = Context.getInstance();
} private function onStatus(event:StatusEvent):void
{
switch(event.code)
{
case KEY_UPDATECOMPLETE_CODE:
{
var e:Event = new Event(KEY_UPDATECOMPLETE_CODE);
dispatchEvent(e); break;
}
default:
{
break;
}
}
} public function setUpdateSuccess(updateComplete:Function):void
{
init();
content.addEventListener(StatusEvent.STATUS, onStatus);
} }

关于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. 转载一篇nm命令使用的文章,虽然没用用这个方法解决但是文章很好

    http://blog.csdn.net/acs713/article/details/13505931

  2. python爬虫框架scrapy初试(二点一)

    功能:爬取某网站部分新闻列表和对应的详细内容. 列表页面http://www.zaobao.com/special/report/politic/fincrisis 实现代码: import scra ...

  3. c#委托概念

    委托的官方概念是:安全封装方法的类型. 百度百科的概念是,委托是个类,定义了方法的类型,使得方法可以作为另外一个方法的参数进行传递.使得程序具有很好的扩展性. 揉碎了讲一下这个概念: 张三要做三件事: ...

  4. shell 脚本中for循环

    昨天很痛苦的搞了一天的for循环,在服务器上运行没啥问题,在设备上运行总是不行,部分代码如下: for(i=1;i<$cnt+1;i++)do echo "xxxx"  &g ...

  5. [Jenkins]admin用户登陆,提示登陆无效(之前登陆OK,三天没有登陆,突然提示登陆无效,重启无法解决)的解决方法

    问题出现现象: 系统一直正常,突然某天登陆,提示用户无效,无法登陆成功. 问题分析过程: 1.查看日志:/var/log/jenkins/jenkins.log(通过ps -elf | grep je ...

  6. 免费SSL证书申请

    https://buy.wosign.com/free/#apply 和 http://www.startssl.com/

  7. 谷歌游览器对<input type='file'> change只能响应1次解决和样式的改变

    在项目过程中遇到的需要上传本地文件,file的原始控件不太美观,但是这个控件和button有点不太一样, 改变这个样式的思路就是在控件外面套一层链接,然后把file控件的透明度设置为0(透明).样式只 ...

  8. QT学习笔记—1

    1.模态和非模态的区别:非模态可以同时操作两个窗口,模态的只能在顶层窗口关闭之后才能使用其他窗口 //同时显示出widget和dialog窗口,非模态     QDialog *dialog = ne ...

  9. 用Python做SVD文档聚类---奇异值分解----文档相似性----LSI(潜在语义分析)

    转载请注明出处:电子科技大学EClab——落叶花开http://www.cnblogs.com/nlp-yekai/p/3848528.html SVD,即奇异值分解,在自然语言处理中,用来做潜在语义 ...

  10. SQL2008将服务器的数据库表数据插入到本地数据库

    一,配置参数 exec sp_configure reconfigure exec sp_configure RECONFIGURE 若不配置参数会出现,提示这个错误: SQL Server 阻止了对 ...