守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 2498|回复: 0

[Windows] 使用ANE调用Box2D的C++类库

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    52584
    钢镚
    1422

    开源英雄守望者

    发表于 2015-1-8 15:13:45 | 显示全部楼层 |阅读模式

    Box2D是众所周知的2D物理引擎,它有很多语言版本,我们AS开发者可能比较熟悉AS3版本,但如果在移动设备上跑AS3的Box2D效果很不理想。大家都知道著名的手机游戏“愤怒的小鸟”就是使用的Box2D的C++类库,如果Flash应用也可以调用高效的C来进行物理运算那么一定是非常Happy的事情。感谢 猫粮 的帮助,我找到了Box2D的作者为我们写好的一个AIR与C++的调用接口类,本文我将介绍如何利用这个ANE类库来实现Flash对C++版本Box2D的调用。

    这个ANE类库可以到 https://github.com/mnem/box2d_ane 去下载

    动手之前先确认如下几个事情:
    1,Xcode版本需要是4.1。在4.2下无法打包C++的动态链接类库,原因我仍在与内部同事沟通中。
    2,AIR打包工具ADT版本在3.0以上。这是对ANE的最低支持版本。
    3,需要具备iOS开发的经验以及条件(开发者帐号)

    在下载下来的压缩包中,打开extension文件夹。其中,文件夹default是AS3的版本源代码,native文件夹里是原生类资源,ane文件夹中是AS类资源(以前介绍过,任何一个ANE项目都包括一个原生类和AS类)。

    1,建立项目
    双击native/ios/NAH_B2D/NaHBox2D.xcodeproj,可以直接创建一个Xcode项目。这个项目通过box2d文件夹下的cmake文件自动创建项目结构,所以在创建项目的时候需要保持native文件夹下的结构不变。

    打开FlashBuilder,使用ane文件下的资源创建一个Flex Library项目。这个项目用来创建ANE的AS类文件。

    2,创建应用
    在开发者后台创建一个应用,申请证书以及设备授权文件(具体操作见我之前的博客文章)。
    在FlashBuilder中创建一个AS项目,作为test项目,引用上一步创建的Library。

    我在本文提供了一个例子,大家可以最后下载下来运行来看效果。这篇文章不对代码进行罗嗦,但我要对这个Box2D的ANE版本做一个大致的功能介绍。这是这个例子的运行视频:


    这个Box2D的ANE接口类需要用到AS3类来提供数据类型,如果你熟悉如何用AS3版本来创建材质和物体,那么在这个ANE版本里也是几乎一样的代码。但它并非是一个完善的接口类库,它虽然提供了一些基本的方法,比如world创建,body和材质的创建,但对于AS类接口来说还远远不够。类库中只有对规则矩形的创建接口,而没有对圆形和自定义刚体的创建接口。所以这是一套需要开发者自行扩展的API,需要开发者对Box2D的使用需求有一定的了解,并且熟悉C++代码。我并非是一个Box2D的老用户,只用它开发过一两个项目,所以在这个例子里我只对它做了有限的几个扩充。大家可以从代码注释中找到我添加的几个AS接口和C++方法。希望这个程度的介绍可以帮到一些切实需要使用C类来提高效率的开发者,它与AS类库的效率对比是非常显著的。下面是我准备的一些下载资源
    Box2D_ANE_Example.zip


    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2024-3-19 16:40 , Processed in 0.046792 second(s), 30 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表