[air for ios] 三小时开发一个iOS飞行射击游戏
http://www.badyoo.com/index.php/2012/07/04/158/index.html
2012-07-04
好吧,这次这个demo 没什么难度,主要是思路,这个文章主要讲解是air在移动端的优化:
一部飞机。重力感应控制移动。点击屏幕发射直线子弹。一些飞过来的敌人。
子弹击中飞机屏幕晃动。
最终发布的ipa文件下载
(支持iPhone/iPad需要越狱,文件大小为4.78M)
首先本教程用到的东西:
第一步:
当然准备资源了,这里头,准备了一些游戏资源。资源来自
coocs2d
的一个例子,资源包括一下几个东西:
-
五个船的逐帧动画;
-
一个陨石;
-
星河背景;
-
银河系;
-
类似太阳的球体;
-
类似光斑的玩意;
-
类似黑洞的玩意;
-
一个子弹;
接着全部绑定bitmapdata 导出swc库供游戏使用;如果你完全不会导出或者绑定?那么可以以下我录制的视频:
Ps:在这里如果位图一多时,大家可能会不知怎么去绑定bitmapdata好。这里只要在库面板里ctrl +a 全选所有位图右键一起绑定。
第二步:
在flash builder 4.5以上新建一个ios的手机项目。Air的sdk用air 3.3的。因为最新版的对手机端是有优化的。
然后手机设置这里,目标平台选择ios ;权限只要全屏;其他默认;
下一步在构建路径那把下载下来的badyooFramework Rc1.2的swc库给添加进来:
Ok项目建立完成;
接下来修改air 配置文件,该文件在src 下一个后戳为xml的文件;
打开修改几处地方,如果你找不到那么就查找下面几个字段吧:
如果实在不知什么意思那么看下面文章解救你:
<id
> 修改成的配置文件id 这个必须的。所有ios 应用开发都要用证书;
<aspectRatio
>
修改成
landscape
这个意思是让程序横屏;
<renderMode>
修改成gpu 这个是程序的渲染模式主要有三个模式
cpu
, gpu
, or direct
;
<
requestedDisplayResolution>
修改成
standard
因为我们的资源是iphone版的所以使用标准的分辨率即:iphone 系列 480 *320 ipad 1024*768;
修改项目属性下的编译器属性;
在附加的编译器参数下加入:
-optimize=true 这个官方文档说是优化程序用来着
-version=16 这个是因为air 3.3对应的播放器版本是16
-include-libraries ../Assets.swc 把刚刚我们做的swc资源库给编译进游戏中
第三步:
首先讲解文档类
文档类在这个游戏中的作用:
设置整个程序的大小,帧频。对齐方式。启动多点触摸。设置游戏品质。初始化游戏资源。初始化游戏场景;
下面的类就不一一说明的。代码内都有注释;
游戏的逻辑:
飞机就只有一个移动没有别的都东西,那么直接用重力感应进行位置的移动:
子弹的逻辑:
子弹主要是依靠游戏的主循环进行碰撞判断还有移动,然后就是子弹的移除了,因为你子弹是一直创建的,所以超出屏幕或者碰到敌人就删除吧:
怪物逻辑:
其实就是一直向坐标走。没有别的,还是有就是死亡了,新建一个敌人在所有敌人的最后面。
最后讲重点吧,as3 在移动端的效率优化:
1:
由程序的架构开始,游戏要适应不同的平台,那么ios上主要是iphone 还有ipad。
我们针对两个平台使用一下分辨率 iphone 480*320 ipad1024*768;
2:游戏品质设置成”LOW”就可以了。因为游戏使用的是位图,所以这个品质不会影响到游戏的画面,但是可以提高游戏很好的效率。
3:还有你会发现我游戏里只有一个主循环。然后主循环执行需要循环判断的对象内一个frame方法,这是因为一个游戏最好使用一个主循环,而不是监听更多的主循环。这样可以提高一定的效率;
4:对象的引用问题,直接引用比遍历效率高,不要什么东西都依靠遍历,如果你游戏主角只有一个。那么要进行判断的时,只要多的去跟少的进行判断,而不是少的去遍历多的。
5:代码上的优化,其实这个很多人应该都知道,在数组长度不是经常变化时,建议用一个int来记录长度,之后的for循环去跟这个值进去比较遍历,而不是去访问数组的长度;
还有在这里说明一点,Vector 效率是不如array 的 而官方解释是说Vector效率高于array。但是我在无数实验中,发现效率最高还是array;
6:注意游戏内存的使用,手机游戏一般都是那些在这个场景使用才会去加载,使用。不用的内存记得即时删除回收内存。适当的使用Gc ,flash自带的Gc在手机端是可以使用的。还有Gc方法在电脑上调试时,。如果你在程序启动1秒内,也就是第一帧时使用gc,那么程序就会卡死。这个是编译器的问题。10.1以上的flash播放器都会 回收不在显示区域30秒后的位图内存。这个会导致你下次使用这个位图,程序底层会在内存中重新new 。那样程序将出现假死。
7;位图的使用,手机游戏就不用说了,都是使用位图的,不管是oc 或者c++做ios游戏都是使用位图的。而我的位图引擎那么快,原理就是上面这几点。不说笑。效率在低端机子别starling这些stage3d引擎效率还要高。不要以为原生效率会比as3好多少,其实不怎样的,cocos2d这样的引擎, 在效率对比上跟as3的stage3d是差不多的。只是人家的代码执行效率会高很多。
分享到:
相关推荐
AS3 AIR FOR IOS 应用内支付教程 包括代码解析 ane打包 证书
adobe air 连接 airplay功能
ios开发者证书,flex,flash,air手机开发使用,输出越狱版的ipa的利器
IOS-安卓内购 for flash air
flex、flash及air等ios开发证书(P12格式) 压缩包内含两个文件: ios.p12(ios开发证书) mobileprovision.mobileprovision(配置文件) 用该证书及对应配置文件可以免99刀的Apple developer费用,编译出的ipa...
手机在同一局域网中(同一无线路由器内)可以实现无线打印。如果安装完成后然无法打印则需要安装补丁(补丁分32位系统和64位系统),按照自己系统位数安装补丁(双击即可)
ios.p12(ios开发证书) mobileprovision.mobileprovision(配置文件) 用该证书及对应配置文件可以免99刀的Apple developer费用,编译出的ipa程序可以直接在越狱后的ios设备中真机测试运行。 用Flex Builder以...
ios实现无线打印(Airprint)报表功能。包括人员提成,销售月度报告等等。 代码包含用代码绘制文字生成图片等功能
Flash Builder 开发 ios手机应用
flex、flash及air等ios开发证书(P12格式) 压缩包内含三个文件: ios.p12(ios开发证书) mobileprovision.mobileprovision(配置文件) flash ios 设置顺序.doc 是对我们的flash开发ios的一些设置问题 如果 ...
SandboxBrowser一个简单的iOS沙箱文件浏览器,您可以通过AirDrop共享文件
凡是接触过iOS的开发者都清楚每一台iOS设备都有一个唯一的识别号:UDID,这个40位的字符串是你的设备区别于其他任何一台设备的唯一标识。 这个字符串用处非常大,我们可以把它作为用户的唯一ID,跳过用户登陆这一步...
airplay播放视频 可以应用到项目中,需要设备支持airplay
此项目是最近领导安排的预研项目,是破解AirPlay私有协议,实现了音视频推送功能,并兼容了iOS9/10以上的系统, 项目可能根据不同的android系统略有修改,具体看代码。
iPad Air升级iOS8.0.1怎么降级修复?.docx
支持airplay最新协议(ios9以上)
Flash+Flex+Air 移动开发入门经典——适用于Android、iOS、BlackBerry系统
思科的3800自带控制器版本ios AIR-AP3800-K9-ME-8-3-122-0.zip
整理一下【7年前的咯】 10个日常应用开发的小demo 放大镜 自定义弹框空间 动态视图开门 cell数据库的添加 仿试衣间效果滑动 缓存能默认过期时间 coco2d小游戏 airplay手机之间的传输等。 自己觉得可以就下载。