基于 Alchemy 实现 AS3 与 C++ 交互(1)C++ 回传 Array 给 AS3

  • 作者:柳大·Poechant
  • 邮箱:zhongchao.ustc@gmail.com
  • 博客:blog.csnd.net/poechang
  • 日期:March 26th, 2012

0 Alchemy 的使用

请参考 Adobe 官网,这里不赘述。

1 C++ 代码

1.1 接口函数

// AS3 Array 以参数形式传入
AS3_Val test(void *data, AS3_Val args)
{// 创建一个数组int array_size = 3;int array_c[array_size];array_c[0] = 1;array_c[1] = 2;array_c[2] = 3;// 从参数获取 AS3 ArrayAS3_Val asArray = NULL;AS3_ArrayValue(args, "AS3ValType", &asArray);// 得到 Array 的 push 方法AS3_Val push_function = AS3_GetS(asArray, "push");// 调用上面得到的方法for (int i = 0; i < array_size; ++i){// 一定要创建 Array 对象,然后把 Array 对象 push 到结果 Array中!!!AS3_Val int_to_push = AS3_Array("IntType", array_c[i]);AS3_Call(push_function, asArray, int_to_push);AS3_Release(int_to_push);}AS3_Release(push_function);return asArray;
}

1.2 封装、暴露

int main()
{AS3_Val testFun = AS3_Function(NULL, test);AS3_Val _API = AS3_Object("test:AS3ValType", testFun);AS3_Release(testFun);AS3_LibInit(_API);return 0;
}

2 用 Alchemy 将 C++ 编译成 SWC

g++ test.cpp -swc -O3 -o test.swc

这个过程较慢。

3 AS3 代码

package
{   import cmodule.a.CLibInit;import flash.display.Sprite;public class test2 extends Sprite{private static var lib:Object = null;public function test2():void{var loader:CLibInit = new CLibInit();var lib:Object = loader.init();var oldArray:Array = new Array();// 调用 C++ 函数var array:Array = lib.test(oldArray);for (var i:int = 0; i < array.length; ++i){trace(array[i]);}}}
}

4 运行 AS3 程序

将上面生成的 test.swc 加入到 AS3 工程中,并添加路径。然后运行。我在 Flash Buider 中的结果如下:

1
2
3
[SWF] test2.swf - 解压缩后为 1,574,377 个字节
[卸装 SWF] test2.swf

-

转载请注明来自“柳大·Poechant的CSDN博客”:blog.CSDN.net/Poechant

-

基于 Alchemy 实现 AS3 与 C++ 交互(1)C++ 回传 Array 给 AS3相关推荐

  1. 顶会论文:基于神经网络StarNet的行人轨迹交互预测算法

    1.背景 民以食为天,如何提升超大规模配送网络的整体配送效率,改善数亿消费者在"吃"方面的体验,是一项极具挑战的技术难题.面向未来,美团正在积极研发无人配送机器人,建立无人配送开放 ...

  2. as3与php交互实现总结

    转自:http://blog.csdn.net/ahstudy/article/details/6996824 目前flash在各方个面的应用越来越广,而flash也不单只是注重自身绚丽的效果,也需要 ...

  3. 基于C++实现一个支持简单交互绘图小程序

    资源下载地址:https://download.csdn.net/download/sheziqiong/86763967 资源下载地址:https://download.csdn.net/downl ...

  4. 基于移动终端的大学生心理健康交互管理系统的研究与设计

    基于移动终端的大学生心理健康交互管理系统的研究与设计 摘要:近年来随着科技的不断发展和进步,移动智能设备逐渐融入到了我们的日常生活中.为了应对大学生在心理健康管理方面的大量需求,提出了一种基于移动端设 ...

  5. 计算机桌面交互,基于全息现实技术的桌面交互系统与沉浸式CAVE系统的区别

    广义的虚拟现实分类可以分为:虚拟现实(VR).增强现实(AR).混合现实(MR).全息现实(HR),统称为:XR扩展现实,这是人类对感知能力拓展的进化需求,而下一代人机感知交互技术非全息现实莫属,全息 ...

  6. 【聆思CSK6 视觉AI开发套件试用】基于CSK6011a_nano的虚拟打砖块交互系统

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:马博 非常感谢极术社区和聆思科技提供的机会,加之前做过其他视觉模块的测试项目,于是尝试申 ...

  7. Linux基于expect(tcl)实现shell自动交互

    1.需求:在shell中执行scp命令时,可以自动输入密码,而不用手工交互输入. 2.方案:采用expect来实现.       Expect是一个基于TCL开发出的语言包.       而TCL(T ...

  8. stm32 交换机芯片_基于STM32的全链路语音交互 - stm32/stm8 - 电子工程世界

    硬件平台:STM32F746G-DISC开发板 编译软件:KEIL 5.31 操作系统:RTX5 TCP/IP协议栈:Cyclone-TCP 语音交互平台:思必驰DUI开放平台 这里说一下使用的TCP ...

  9. 基于WMS/WCS与PLC数据交互的立体仓库控制系统案例分析

    写在面前 上次分享了文章: TIA Portal实现动态加密的高阶玩法-分级催款密钥授权管理 然后很快就有朋友根据里面的思路实现了,很赞,不过提醒大家的是,我们分享的只是一些思路,不是让大家跟做某件事 ...

最新文章

  1. 运维39脱产班 决心书
  2. 前端入门 前端自学路线 web开发前端如何学习
  3. 百度发布全新桌面版机器学习开发环境,12月赠送免费GPU算力
  4. 2.3微秒的特征点匹配
  5. icd11中文版精神障碍pdf_精神与行为障碍类别目录(ICD-11)
  6. 《dp补卡——完全背包问题》
  7. 【学习笔记】 IPv4地址、NAT与子网掩码、子网划分
  8. 远程服务器登入信息,远程登录服务器查看信息
  9. C#WinForm 窗体单例模式 反射单例
  10. python之类的封装、多态、继承
  11. 12.Flask-Restful
  12. 蓝牙精确定位技术下的化工厂安全管理系统,蓝牙定位标签-新导智能
  13. 封装多帧dicm图像
  14. C语言圆周率天书简化,c语言天书__圆周率的计算及分析
  15. 用JavaScript实现用户登录验证、注册信息格式检验(附代码)
  16. xp重启计算机的快捷键,xp电脑关机重启快捷键如何使用
  17. 今日恐慌与贪婪指数为15 恐慌程度有所上升
  18. Self-Supervised Learning of Pretext-Invariant Representation
  19. 【转】我是一个INFP者
  20. 从西天取经的九九八十一难来看Java设计模式:模板方法模式

热门文章

  1. 作业及复习1:公共政策分析
  2. rabbitMQ(docker版本) 安装Stomp插件--前端消息实时提醒(消费者随机提醒,单一消费者) demo
  3. 《计算机图形学基础(OpenGL版)》勘误表
  4. python之 模拟简单图书馆
  5. [转载]综合运用:智力测试游戏 (八11班 刘欣然同学提供)
  6. 用几何画板画垂线的方法
  7. win7修复计算机无鼠标,win7鼠标不动了怎么修复_win7鼠标不动了的解决办法
  8. 次时代游戏建模同时拥有众多其他职业技能无法比拟的闪光点!3D游戏建模的五大优势!萌新小白必看
  9. 项目的敏捷开发方法(转自MBAlib)
  10. 查看visual studio 项目是哪个版本的VS