关于ActionScript在Java调用上的一些原理
在公司遇到了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调用上的一些原理的更多相关文章
- Java文件上传下载原理
文件上传下载原理 在TCP/IP中,最早出现的文件上传机制是FTP.它是将文件由客户端发送到服务器的标准机制. 但是在jsp编程中不能使用FTP方法来上传文件,这是由jsp运行机制所决定的 文件上传原 ...
- java调用机器上的shell脚本
java调用机器上的shell脚本,可以这样方便的通过shell脚本调用本机的C.C++等程序 Process process = null; Runtime runTime = Runtime.ge ...
- Linux系统上java调用C++ so库文件
PART1: java中使用jna替代jni调用c++/c生成的 dll/so库文件需要做的事项 1.引入JNA依赖或者直接下载JNAjar包 <!-- http ...
- 【Java心得总结五】Java容器上——容器初探
在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...
- 【Java心得总结三】Java泛型上——初识泛型
一.函数参数与泛型比较 泛型(generics),从字面的意思理解就是泛化的类型,即参数化类型.泛型的作用是什么,这里与函数参数做一个比较: 无参数的函数: public int[] newIntAr ...
- 存储过程详解与java调用(转)
存储过程的一些基本语法: --------------创建存储过程----------------- CREATE PROC [ EDURE ] procedure_name [ ; number ] ...
- 分享:写了一个 java 调用 C语言 开发的动态库的范例
分享:写了一个 java 调用 C语言 开发的动态库的范例 cfunction.h 代码#pragma once#ifdef __cplusplusextern "C" {#e ...
- java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊
java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊 java 调用 C# 类库搞定,可以调用任何类及方法,很简单,非常爽啊 总体分三步走: 一.准备一个 C# 类库 (d ...
- ZH奶酪:Java调用NLPIR汉语分词系统
NLPIR工具 支持自定义词表: 可以离线使用: 下载地址:http://ictclas.nlpir.org/newsdownloads?DocId=389 在线演示:http://ictclas.n ...
随机推荐
- iOS strong与weak的使用
strong修饰的属性是强指针类型的,weak修饰的属性是弱指针类型的 ARC对于内存中的对象管理机制,当某个对象没有被强指针指向的时候,该对象就会被销毁. 所以不适当的使用strong和weak修饰 ...
- C# LogHelper
using System; using log4net; using log4net.Config; namespace Utils { /// <summary> /// 日志帮助类(l ...
- Egret 显示容器
1,显示容器:所有的容器都继承自DisplayObjectContainer , DisplayObjectContainer 又继承自DisplayObject: 2,想定义一个容器只要创建一个类, ...
- TypeScript 学习四 面向对象的特性,泛型,接口,模块,类型定义文件*.d.ts
1,面向对象的特性一:类,继承,见上一篇博客: 2,面向对象的特性二: 泛型(generic):参数化的类型,一般用来限制集合的内容:指定只能放某个类型的元素 如下图中的尖括号中的Person,就代表 ...
- 实战ASP.NET访问共享文件夹(含详细操作步骤)
博客园找找看(http://zzk.cnblogs.com)的索引文件占用空间太大,需要移至另外一台服务器,所以要解决"在ASP.NET中通过共享文件夹访问索引文件"的问题. 假设 ...
- Python网络编程学习_Day9
一.socketserver实现多并发 socket只能实现单进程通讯,要实现多进程同时和服务端通讯就要使用socketserver. 代码如下: import socket client = soc ...
- cookie会话技术
会话技术 B/S请求是无状态无记忆的,脚本与脚本之间是没有联系的,导致不能进行连续的业务逻辑 Cookie技术:将会话数据保存在浏览器端 原理:服务器向浏览器发送指令,用来管理存储在浏览器端的cook ...
- 快速掌握LODOP打印使用方法
用运之前简单介绍几个东西. install_lodop32.exe与install_lodop64.exe这两个是2个网页打印控件,网页打印必须安装这个控件在客户端,分为32和64位安装控件.(如果自 ...
- thinkphp5.0 自动加载
自动加载 概述 ThinkPHP5.0真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer类库的自动加载. 自动加载的实现由think\Loader类库完成,自动加载规范符 ...
- CentOS 6.5静态IP的设置(NAT和桥接都适用)
CentOS 6.5静态IP的设置(NAT和桥接都适用) 为了方便,用Xshell来.并将IP设置为静态的.因为,在CentOS里,若不对其IP进行静态设置的话,则每次开机,其IP都是动态变化的,这样 ...