Air3.2RC版试用Away3D-4.0beta版开发移动端3D程序

在整个开发过程中,有很多出问题的地方,这里记录一下:

###移动端开发注意事项:

1、在移动开发过程中,为了提高运行效率,尽量不使用Flex框架,而创建AS3的移动项目。

2、如果需要构建移动端、Web端都适用的类库,则该类库中不再能用mx的组件,如需数组来保存数据,则尽量使用Array而不是ArrayCollection、ArrayList。

###Air 3.2打包IOS应用需要注意事项

1、由于打包成IOS应用的过程是将AS代码打包编译成Object C 的过程,所以IOS的产品上没有Air运行时;

2、由于Air3.2才支持移动端Stage 3D,所以在将AS带按摩打包编译成Object C的过程前,需要设置编译环境为Air3.2所对应的SDK,所以这里下载一个Air 3.2的SDK并解压缩:

复制一份sdk4.6.0,并命名为4.6.rc32,然后将air3.2RC文件夹中的内容全部拷贝到sdk4.6.rc32文件夹中:

将移动应用程序的SDK指向4.6.rc32文件夹中内容;

3.将移动项目描述文件中的版本改为3.2,然后将渲染机制改为direct,并将编译参数加上 -swf-version =15,运行程序,会报错为:

Error: Error #3709: The depthAndStencil flag in the application descriptor must match the enableDepthAndStencil Boolean passed to configureBackBuffer on the Context3D object. at flash.display3D::Context3D/configureBackBuffer() at away3d.core.managers::Stage3DProxy/configureBackBuffer()[D:\工作\Flex\Flex 3D\WorkSpace\Map3DMobile\src\away3d\core\managers\Stage3DProxy.as:119] at away3d.containers::View3D/updateBackBuffer()[D:\工作\Flex\Flex 3D\WorkSpace\Map3DMobile\src\away3d\containers\View3D.as:460] at away3d.containers::View3D/render()[D:\工作\Flex\Flex 3D\WorkSpace\Map3DMobile\src\away3d\containers\View3D.as:486] at com.mapabc.view::Map3DView/onEnterFrame()[D:\工作\Flex\Flex 3D\WorkSpace\Map3DMobile\src\com\mapabc\view\Map3DView.as:285]

4.在Away3D 4.0 beta版中有一个bug,这个bug估计会在正式版中修正掉,bug就是设置描述文件的depthAndStencil 参数有问题,这里先将它设置描述文件的depthAndStencil 设置为false,然后将Away 3D包中的away3d.containers.View3D中的方法:

中的_stage3DProxy.configureBackBuffer(_width, _height, _antiAlias, true)的最后一个参数设置为false即可。

再运行程序则不报错,效果如下:

不错哦,地图上显示楼快了!!!!

Published: March 13 2012