欢迎来到天天文库
浏览记录
ID:42624481
大小:1.98 MB
页数:14页
时间:2019-09-19
《Air调用dll方法示例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Air调用dll方法示例ANE简介:Ane,AdobeAirNativeExtension的缩写,是指AdobeAir的本地扩展。它的作用是提供基于AdobeAir平台上层开发的as3脚本调用所在的设备功能的接口及方法。swc文件是采用归档格式的ActionScript类库。Swc文件包含swf文件和其资源文件。Swc文件是共享ActionScript类的简便方法。本机扩展是包是一个ANE文件。和swc文件一样,ANE文件也是一个ActionScript类库,包含归档格式的swf文件和其资源文件。不过,ANE文件和swc之间最重要的区别是只有an
2、e文件才能包含本机代码库。一、创建vc项目打开vs2005,新建一个MFCDLL项目:将项目编译方式改为Release:FlashRuntimeExtensions.h文件位置:sdk/include目录下;FlashRuntimeExtensions.lib文件位置:sdk/lib/win目录下;将FlashRuntimeExtensions.h与FlashRuntimeExtensions.lib拷贝到目录下点击右键Add->ExistingItem将FlashRuntimeExtensions.h引用进来点击右键properties打开项目
3、属性,点击Linker->Input中第一项AdditionalDependencies,将FlashRuntimeExtensions.lib添加进来。打开C/C++->PrecompiledHeaders,第一项选择NotUsingPrecompiledHeaders打开ANETest.h,将文件内容修改为:打开ANETest.cpp,如下所示添加方法:先大致介绍下各方法:先是3个工具方法:utf8_to_ansi将Air传入的utf8中文参数转换c多字节中文getCharLength获取Char*长度addChar拼接两个char*然后是我
4、们要修改的方法:sayHello方法是我们这里演示的方法,传入名字,返回Hello,+名字。eventTest方法是我们这里演示事件的方法,里面调用了eventTestThread线程方法。contextInitializer是固定的用来注册方法信息的方法,这样Air就可以通过方法名称找到方法体最后3个是固定的初始化和结束的方法:contextFinalizerinitializerfinalizer按F7编译通过,稍后我们会详细解释sayHello和eventTest方法一、创建Air项目新建一个Air项目:在项目下(注意不是在src下)创建如
5、下目录结构:ANETest.dll则是从上面vs2005编译后产生的,在ANETestrelease目录下:将其拷贝到Air工程extensionssrcwindows目录下。打开extensions.xml这里需要注意的是id会映射到Air项目中的一个as类,nativeLibrary是刚才的dll名称。如下图创建as映射类:这里首先创建了ane上下文,然后写了个sayHello的方法,传入参数name:String,bytes:ByteArray,bytes是用来返回数据用的。eventTest方法则除了bytes,没有其他参数。打开b
6、uild.xml:这里需要注意的是:第4行SDK_HOME - 4.6sdk位置第12行APP_NAME - Air项目名称第21行NATIVE_EXTENSION_NAME - 打包后ane的名称第22行NATIVE_EXTENSION_ACTIONSCRIPT_CLASSES - 映射的as类运行ant脚本:成功后会在extensionsbin目录下出现一个ANETestDll.ane右键项目属性,在buildpath中NativeExtensions中将此ane选出来:在buildpackaging的NativeExtensions中打上
7、勾:打开主程序ANETest.mxml,添加输入框、按钮与方法:varbytes:ByteArray=newByteArray();aneTestDll.sayHello(txtName.text,bytes);varret:String=bytes.readMultiByte(bytes.length,"chinese");Alert.show(ret);这样即可以调用dll中的方法了。为了演示事件,还需要添加事件相关代码:addEventListener(StatusEvent.STATUS,statusHandler);publicfunc
8、tionstatusHandler(e:StatusEvent):void{varlevel:String=e.level;varcod
此文档下载收益归作者所有