最近在用Flex做项目,需要Flex连接刷卡器读卡,而卡片厂商只提供了dll、lib库,还提供java vb等一些语言的demo,没有flex的demo,于是开始研究flex的ane。

学过java的朋友可以把flex的ane理解成为java中的jni,就是调用本地方法。

但在网上找ane关于window-x86的资料,聊聊无几,在网上参考了这一篇,终于写出了helloworld程序 AIR Native Extension c++ 鼠标全局坐标 配置环境到发布全程讲解

,这篇文章对我帮助很大,但也有一点没讲到的地方,在此我以简单计算器的例子继续介绍一下flex端的方法如何传值到C++端,方便后人学习。

Flex端调用add(x, y)返回结果,以Number为例子。官方也提供的详细的中文文档air_extensions.pdf

calc.cpp

#include "FlashRuntimeExtensions.h"#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<windows.h>extern "C"
{//初始化(必须的)__declspec(dllexport) void initializer(void** extDataToSet, FREContextInitializer* ctxInitializerToSet, FREContextFinalizer* ctxFinalizerToSet);//终结(必须的)__declspec(dllexport) void finalizer(void* extData);//被AS调用的__declspec(dllexport) FREObject add(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]);
}extern "C"
{//具体方法FREObject add(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]){//入参x、y转换 将flex的number转换为double类型double x;FREGetObjectAsDouble(argv[0], &x);double y;FREGetObjectAsDouble(argv[1], &y);//返回值FREObject value = argv[2];FREObject result;//把结果赋值给resultFRENewObjectFromDouble(x + y, &result);//赋值给返回值中的result属性 Flex端可以add(x, y).result调用FRESetObjectProperty(value,(const uint8_t*)"result",result,NULL);        return NULL;}void contextInitializer(void* extData, const uint8_t* ctxType, FREContext ctx, uint32_t* numFunctions, const FRENamedFunction** functions){//方法数量*numFunctions = 1;FRENamedFunction* func = (FRENamedFunction*) malloc(sizeof(FRENamedFunction) * (*numFunctions));//在初始化方法中声明可以被AS调用的方法func[0].name = (const uint8_t*) "add";func[0].functionData = NULL;func[0].function = &add;*functions = func;}void contextFinalizer(FREContext ctx){return;}__declspec(dllexport) void initializer(void** extData, FREContextInitializer* ctxInitializer, FREContextFinalizer* ctxFinalizer){*ctxInitializer = &contextInitializer;*ctxFinalizer = &contextFinalizer;}__declspec(dllexport) void finalizer(void* extData){return;}
}

calc.as

package com.chenlm
{import flash.external.ExtensionContext; public class calc{//与刚才c++项目中定义的函数名要一直public static const ADD:String = "add";//与extension.xml中的id标签一致public static const EXTENSION_ID:String = "com.chenlm.calc";private var context:ExtensionContext;public function calc(){//实例化上下文context = ExtensionContext.createExtensionContext(EXTENSION_ID,"");}public function add(x:Number, y:Number):Number{var obj:Object = new Object();                //远程调用上下文中的add方法 此处的入参对应C++中的<span style="font-family: Arial, Helvetica, sans-serif;">FREObject argv[]</span>context.call(ADD, x, y, obj)return obj.result;                         }}
}

extension.xml代码

<extension xmlns="http://ns.adobe.com/air/extension/3.1"><id>cn.lyj.mouse.mousePosition</id><versionNumber>1.0.0</versionNumber><platforms><platform name="Windows-x86"><applicationDeployment><nativeLibrary>calc.dll</nativeLibrary><initializer>initializer</initializer><finalizer>finalizer</finalizer></applicationDeployment></platform></platforms>
</extension>

Main.mxml代码

Main.mxml代码
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"xmlns:s="library://ns.adobe.com/flex/spark"xmlns:mx="library://ns.adobe.com/flex/mx"width="333" height="189" "><s:layout><s:HorizontalLayout verticalAlign="middle"/></s:layout><fx:Script><![CDATA[import com.chenlm.calc;var c:calc = new calc();protected function calc(event:Event):void{result.text = c.add(Number(x.text), Number(y.text));}]]></fx:Script><mx:TextInput id="x" restrict="0-9/."/><mx:TextInput id="y" restrict="0-9/."/><s:Button label="计算" click="calc()"><s:Label id="result" text="结果"/>
</s:WindowedApplication></pre><br>

Flex ANE介绍相关推荐

  1. 2.React Native Flex布局介绍以及实践

    好久没有写博客,一直在用自己的印象笔记记录一些问题.2017年了,想重新的把博客写起来.也希望通过这个平台交一些朋友. 没有具体的介绍基本的语法,主要是说明了与标准的CSS Flex的一些区别以及一个 ...

  2. 最简单的flex布局介绍(转自阮一峰)及筛子案例

    大佬阮一峰在15年的博客至今我认为无人可以超越 所以就直接引用他的博客 Flex 布局教程:语法篇 - 阮一峰的网络日志 (ruanyifeng.com) 在引用之后为一个flex布局小demo Fl ...

  3. FLEX SharedObject介绍及应用

    ShareObject介绍: 1 ShareObject,顾名思义共享对象,而通常意义上的共享,从B/S结构上来讲,无非是客户端(浏览器端)的共享和服务器端的共享了,不错,ShareObject刚好份 ...

  4. 微信小程序布局display flex布局介绍

    display flex是什么? 微信小程序最近火的不要不要的,下载开发工具测试了一下,小程序对css支持很好, 布局使用display flex布局火力强大,不太了解或者对flex布局比较生疏的童靴 ...

  5. JavaScript 5/30:Flex Panel Gallery即FLEX布局的图片库

    JavaScript30 为Wes Bos推出的一项为期30天的挑战,旨在帮助人们用纯JavaScript来实现效果,初学者若想在JS方面快速精进,不妨一试.本题为第五题. 实现效果 点击任意一张图片 ...

  6. Flex与.NET互操作(十六):FluorineFx + Flex视频聊天室案例开发

    本文将使用FluorineFx和Flex结合介绍一个简单的视频聊天室案例开发,希望通过此篇和大家交流FluorineFx和Flex的相关技术,同时也希望本篇可以帮助到需要使用FluorineFx做及时 ...

  7. image 微信小程序flex_微信小程序进阶-flex布局

    对于一个后端程序员来说最麻烦的就是布局了,今天就介绍下小程序的布局,介绍一种高效的小程序布局方案.笔者之前也做过native app的布局,对比下来,小程序的布局没有native那么灵活,毕竟goog ...

  8. 你不能只会flex居中布局,精制动画讲解所有flex布局方式,通俗易懂教程

    flex布局相信很多人都已经有不少了解,其优势和作用被越来越多的开发者所喜爱,网上也有很多关于关于flex的介绍和教程.但是根据笔者的面试经验发现,很多人尤其是初中级开发者对flex布局都仅仅停留下c ...

  9. CSS中flex的用法( 学习笔记 )

    flex( 弹性盒.伸缩盒 ) flex 的介绍 flex是CSS中的又一种布局手段,它主要用来代替浮动来完成页面的布局 flex可以使元素具有弹性,让元素可以随页面的大小的改变而改变 弹性容器 要使 ...

  10. 前端笔记(03)——一文看懂flex布局

    文章目录 前言 一.flex基本介绍. 二.父容器属性介绍 1.父容器属性概述 2.flex-direction属性 3.flew-wrap属性 4.flex-flow复合写法 5.justify-c ...

最新文章

  1. 对AI行业未来发展的一些看法
  2. BCH期货合约将在美国挂牌交易所上线
  3. Android开发:Handler的简单使用(一)
  4. “Duke选择大奖”荟萃2009最具创新的Java技术应用
  5. Android UI编程之自定义控件初步(下)——CustomEditText
  6. 温州大学《机器学习》课程课件和视频(四)朴素贝叶斯
  7. 吐血整理:关于机器学习不可不知的15个概念
  8. “腾讯也感受到危机了!”
  9. 容器 - HashTable
  10. 【HDU6194】string string string(统计出现k次的子串数目---后缀数组+st表)
  11. mis服务器系统,MIS系统中服务器推技术的实现
  12. GIS招聘 | 青海省省直事业单位(含地信、测绘等专业)
  13. Leetcode每日一题——T32. 最长有效括号(难)——栈
  14. 体系结构24_输入输出系统(1)
  15. 笔记:物化的技术进步
  16. 挖藕!模拟sql抓取qq密码
  17. 章节十二:编程思维:如何debug
  18. 一个简单的软件测试流程
  19. 计算机专业专科学校排名分数,计算机专业专科学校录取分数
  20. android 开发蓝牙电子秤,GitHub - xiangbohua/scales-bridge: scales-bridge 电子称 蓝牙电子秤 连接库...

热门文章

  1. Preliminary Design Review(初步设计评审(回顾))
  2. SEO: 使用 rel=canonical 为类似网页或重复网页指定权威网页
  3. 阿里云DRDS分布式数据库 - 分库分表
  4. php v9 用户头像,phpcms v9前台会员中心上传头像可getshell | CN-SEC 中文网
  5. 机器学习——AdaBoosting
  6. 深度理解感受野(一)什么是感受野?
  7. MySQL 视图、索引、外键关联策略
  8. ubuntu上安装微信教程
  9. 淘宝二手闲鱼平台按关键词搜索闲鱼商品接口,item_search-按关键字搜索闲鱼商品接口接入说明方案
  10. QQ群霸屏技术教程:不论霸屏技术,只谈QQ认证群