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

原创 2012年03月26日 10:19:27

基于 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 Array
    AS3_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

-

版权声明:本文为博主原创文章,未经博主允许不得转载。合作请联系微信 sinosuperman。

AS3聊天单行输入框图文混排完美实现

几年前刚毕业,第一个游戏模块做的就是聊天。到现在,几个游戏写过几次聊天模块, 之前在4399做的《幻龙骑士》(又名《神骑士》),还有上周六刚上线的《疯狂的子弹》, 用的是同一套代码,聊天输入框没有图文...
  • cceevv
  • cceevv
  • 2014年06月26日 16:04
  • 5554

Adobe FlasCC中 C++端与Flash端的函数参数(如数组和ByteArray)传递

节选自:Using C++ code for path finding in your ActionScript game   如下为C++端接口,as3api.cpp: /* ** ADOBE SY...
  • songxp03
  • songxp03
  • 2013年11月20日 09:27
  • 3285

深拷贝与浅拷贝 AS3 数组concat

记得学C/C++的时候,一直跟指针纠结过。在OOP中虽然用引用代替了指针,但倘若不注意,还是会被小绊一下的。下面以AS3中的数组为例,谈谈对象的“深浅”拷贝。 先来看Demo1,这个是没有使用拷贝的...
  • keep_moving_cqu
  • keep_moving_cqu
  • 2014年08月16日 00:32
  • 1945

as3加密入门-1使用alchemy进行代码混淆

声明:这里所讨论的(以及后续相关的as3加密教程)所有方法都来自网络和我个人试验, 如果有错误,还请大家赐教,所有其它内容均为个人观点,若有不同意见,也可提出讨论。 所列举方法与代码引用了许多其它...
  • maikforever
  • maikforever
  • 2013年09月22日 15:16
  • 783

as3加密入门-1使用alchemy进行代码混淆

声明:这里所讨论的(以及后续相关的as3加密教程)所有方法都来自网络和我个人试验,如果有错误,还请大家赐教,所有其它内容均为个人观点,若有不同意见,也可提出讨论。所列举方法与代码引用了许多其它资料,在...
  • txiejun
  • txiejun
  • 2011年02月20日 11:51
  • 1488

AS3与C/C++的交互

AS3与C/C++的交互 ? (以官方网站的文档内容为准) ? 原文见: http://labs.adobe.com/wiki/index.php/Alchemy:Documentation...
  • maikforever
  • maikforever
  • 2012年04月27日 16:05
  • 841

AS3与C/C++的交互

AS3与C/C++的交互 ? (以官方网站的文档内容为准) ? 原文见: http://labs.adobe.com/wiki/index.php/Alchemy:Doc...
  • maikforever
  • maikforever
  • 2012年05月02日 15:44
  • 2288

Alchemy安装配置 FLASH AS3炼金术

安装前注意事项: 1) 如果你的机子装的不是flash player 10, 那么请删除它装上10的版本, 这是必须的. 开发者请安装flash cs4 2) 如果你的机子装的不是flex s...
  • maikforever
  • maikforever
  • 2012年04月27日 18:15
  • 1875

as3与php交互实现总结

转自:http://blog.csdn.net/ahstudy/article/details/6996824 目前flash在各方个面的应用越来越广,而flash也不单只是注重自身绚丽的效果,...
  • liufan890507
  • liufan890507
  • 2013年05月02日 10:54
  • 873

as3与C++通信,缩放

C++ 与 Flash CS3 通信 From:http://mxmkeep.blog.163.com/blog/static/1064924152010023290254/     ...
  • testing2007
  • testing2007
  • 2012年03月31日 18:30
  • 2869
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于 Alchemy 实现 AS3 与 C++ 交互(1)C++ 回传 Array 给 AS3
举报原因:
原因补充:

(最多只允许输入30个字)