[air for ios] 三小时开发一个iOS飞行射击游戏

http://www.badyoo.com/index.php/2012/07/04/158/index.html

2012-07-04

好吧,这次这个demo 没什么难度,主要是思路,这个文章主要讲解是air在移动端的优化:
一部飞机。重力感应控制移动。点击屏幕发射直线子弹。一些飞过来的敌人。

子弹击中飞机屏幕晃动。

游戏最终效果截屏(PC或Mac上需要使用Flash CS6的模拟器来测试重力感应操控,方法在这里 Flash CS6 体验尝鲜(4)——使用模拟器模拟测试移动端AIR应用 ):

最终发布的ipa文件下载 (支持iPhone/iPad需要越狱,文件大小为4.78M)

首先本教程用到的东西:
帮助文档:http://www.badyoo.com/badyooframework/doc/
badyooFramework Rc1.2 :http://115.com/file/beov8dbg
本文章源码:http://115.com/file/e71nf1au
第一步:
当然准备资源了,这里头,准备了一些游戏资源。资源来自 coocs2d 的一个例子,资源包括一下几个东西:
  • 五个船的逐帧动画;
  • 一个陨石;
  • 星河背景;
  • 银河系;
  • 类似太阳的球体;
  • 类似光斑的玩意;
  • 类似黑洞的玩意;
  • 一个子弹;
接着全部绑定bitmapdata 导出swc库供游戏使用;如果你完全不会导出或者绑定?那么可以以下我录制的视频:
http://www.aipai.com/c11/OjY2IyAqIWgnaiUu.html

Ps:在这里如果位图一多时,大家可能会不知怎么去绑定bitmapdata好。这里只要在库面板里ctrl +a 全选所有位图右键一起绑定。
第二步:
在flash builder 4.5以上新建一个ios的手机项目。Air的sdk用air 3.3的。因为最新版的对手机端是有优化的。
然后手机设置这里,目标平台选择ios ;权限只要全屏;其他默认;

下一步在构建路径那把下载下来的badyooFramework Rc1.2的swc库给添加进来:

Ok项目建立完成;

接下来修改air 配置文件,该文件在src 下一个后戳为xml的文件;

打开修改几处地方,如果你找不到那么就查找下面几个字段吧:
如果实在不知什么意思那么看下面文章解救你:
http://www.badyoo.com/index.php/2012/05/29/111/index.html
<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是差不多的。只是人家的代码执行效率会高很多。

[air for ios] 三小时开发一个iOS飞行射击游戏相关推荐

  1. Egret实战开发笔记,飞行射击游戏(六)

    今天是开发飞行射击游戏第五天,玩家多类型子弹及状态和关卡模式. 简介 实现玩家特殊子弹,激光,追踪导弹. 玩家多状态 下方飞出 正常游戏 胜利等待 胜利飞出 以及 玩家保护 和 关卡切换 实现效果 本 ...

  2. Egret实战开发笔记,飞行射击游戏(二)

    简介 Egret实战开发,记录每天的学习进度,欢迎和我一起学习交流~ 目录 简介 实现目标 一.实现子弹类 二.工厂设计模式 三.子弹管理类ZDManager 实现目标 今天是开发飞行射击游戏第二天, ...

  3. iOS广告页——(开发一个iOS广告页应该要考虑的东西)

    不熟悉客户端软件开发的人都认为开发一款客户端app很轻松.所以我们去面试的时候,经常会碰到如下问题:这个app开发要多久?说实话,对于这个问题,没有人能百分百保证准确时间. 今天我就来为我们苦逼的码农 ...

  4. 【转载国外好文】代工开发一个iOS应用没有那么容易

    导读:这是来自新加坡的 iOS 开发者 Kent Nguyen 发表在1月底的一篇博文.这篇吐槽文在 iOS 开发圈子里流传甚广,从原文150多个评论就可见一斑,现翻译如下. 让我们开门见山吧:做一个 ...

  5. 开发一个iOS应用没有那么容易

    让我们开门见山吧:做一个iPhone应用需要花多少钱?(给外行人员看!转自外国程序员) 就是这个最常见的问题,我的很多朋友(大多是些西装革履的商务人士),还有我那些个对技术一知半解的客户们,他们都问过 ...

  6. 视频教程-从零开发一个iOS企业级项目实战之我的云音乐视频 教程-iOS

    从零开发一个iOS企业级项目实战之我的云音乐视频 教程 任苹蜻,爱学啊创始人 & CEO,曾就职于某二车手公司担任Android工程师后离职创办爱学啊,我们的宗旨是:人生苦短,我们只做好课!熟 ...

  7. 手把手教你开发一款IOS飞行射击游戏(完)

    下面我们开始最后一篇文章,完成我们的飞行射击游戏. 有了前面的基础,相信现在你对Cocos2d的基本元素和编写技巧有了一定的了解,这回我们要接触的是场景切换,我们这回只列出部分代码,说明原理,给读者一 ...

  8. 【Android开发VR实战】三.开发一个寻宝类VR游戏TreasureHunt

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53939303 本文出自[DylanAndroid的博客] [Android开发 ...

  9. ***JAVA*和*Eclipse*开发一个换装小游戏**

    JAVA和Eclipse开发一个换装小游戏** 家有一女如有一宝,最近女朋友的少女心有点爆棚,作为一个计算机专业的人,我的情商简直是低到吓人,但是我还是想到了,亲自给女朋友做一个换装的小游戏,来满足女 ...

最新文章

  1. __name__=='__main__'的理解和使用
  2. AJPFX关于多态的应用
  3. oracle查询100到200数据,100分数据库查询语句(ORACLE 11g)
  4. apollo-配置管理中心-安装
  5. stm32是以c语言来编程吗,stm32用什么语言编程
  6. jar包转换为exe可执行文件
  7. Codingame平台“CHUCK NORRIS”的实现
  8. 京东到家程序员离职当天删库跑路
  9. 饿死也别进外包公司!说好不加班才入职,结果连续工作10小时,提出辞职后,外包公司竟以时间短为理由拒绝给工资!...
  10. ffmpeg去除水印
  11. 计算机课拔线头检讨书,实验室检讨书.doc
  12. 微博舆情 之 特定话题情感分析
  13. 穆迪宣布致力于“气候话语权”运动
  14. dede织梦如何去除网站底部的版权信息
  15. 你如何看待盗版软件?
  16. strtok()--SelectItem--HitTest
  17. EasyUI Datagrid跨行跨列的需求
  18. SuperMap iDesktop常见问题解答集锦 (三)
  19. 《Spatially and Temporally Efficient Non-local Attention Netw......》翻译文献--学习网络
  20. 开源工具系列1:Cloud Custodian

热门文章

  1. 【Spring第五篇】Autowired:自动装配
  2. 边框border(HTML、CSS)
  3. Html5 h5页面输入框失去焦点页面底部白板问题
  4. g hub安装失败_树莓派k8s集群安装mysql及监控
  5. 随笔:大学英语六级 303 分到 576 分带来的一些回忆
  6. 【数据结构笔记14】微软面试经典 - 逆转链表问题(Reversing Linked List)
  7. Linux中的Java类,Java基础入门学习-Java中类的属性
  8. 同步现象 心理学_男生是不是更容易从失恋中走出来?心理学:失恋后悲伤,男女不同...
  9. kafka 同步提交 异步_Kafka 位移提交那些事儿
  10. 补第一阶段冲刺站立会议5(5月17日)