- 浏览: 1117624 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (349)
- javascript (28)
- objective-c&cocos2d (46)
- 开发备忘及常用java代码 (46)
- core java7学习笔记 (13)
- Mina (7)
- HTML5 (13)
- 系统集成项目管理工程师学习笔记 (10)
- 数据库系统原理学习笔记 (11)
- C++学习笔记 (10)
- C语言学习笔记 (5)
- 数据结构学习笔记 (4)
- 计算机网络原理学习笔记 (3)
- 计算机组成原理学习笔记 (2)
- 软件工程学习笔记 (6)
- 开发工具 (15)
- OSGI学习 (1)
- 学习笔记 (19)
- oracle (3)
- java tv (1)
- web server (5)
- javafx (1)
- 随笔 (8)
- 梦舞集 (4)
- 工作流 (3)
- 程序错误记录 (6)
- Windows (2)
- Linux (4)
- Git (1)
- 企业管理 (2)
- android (1)
- JVM (17)
- box2dweb (1)
- 操作系统学习笔记 (6)
- 英语学习 (1)
- Windows 8 应用商店 (1)
- Go语言 (1)
- docker (1)
- visualVM源码学习 (0)
- MariaDB (0)
- JAVA7 (2)
- 面向对象存储 (0)
- Hibernate (14)
- Spring (3)
- 项目构建 (0)
- 读源码学JAVA (0)
- mybatis (1)
- spring mvc (2)
- Javassist (0)
最新评论
-
白天看黑夜:
Apache Mina Server 2.0 中文参考手册(带 ...
Mina学习笔记二_基础 -
yjph83:
兄弟,你这个解决方案是什么什么啊?我现在遇到个问题跟你类似的! ...
Tomcat 8.0.11 移动端访问报400错误问题 -
comedsh:
你好,我也想为开源的做点事情,想让 tomcat-redis- ...
利用tomcat-redis-session-manager做session同步时自定义类对象属性保存不上的解决方法 -
bsr1983:
这个应该是浏览器内部设置的,你可以在Android上试一下别的 ...
javascript学习笔记八 -
787250527:
bsr1983 写道该值是浏览器内部的一个变量,只读的,不可修 ...
javascript学习笔记八
第4章 你的第一个游戏
4.1 按部就班地创建项目
任何非源代码文件都被当做资源,无论是图像文件、声音文件、文本文件还是plist文件。分组并不是必须的,但如果坚持对同类文件进行分组,那么这将为理清项目带来很大便利。
4.2 添加Player Sprite
注意:iOS游戏首选的图像文件格式是PNG(Portable Network Graphic,便携式网络图像),这是一种压缩文件格式,然而与JPG文件不同的是,PNG采用了无损压缩,保留了原始图像所有像素。你也可以保存不经压缩的JPG文件,不过对于同一个图像,PNG文件的大小明显要比未经压缩的JPG文件小。但是这只会影响应用的大小,而不会影响纹理对内存(RAM)的使用。
注意:
记住,在iOS设备上文件名是区分大小写的。如果你视图加载Alien.png或ALIEN.PNG,在模拟器上会成功加载文件而在iOS设备上则不会,因为文件真正的名字是alien.png,字母全部小写。这就是坚持统一的命名约定——例如强制所有文件名使用小写字母——的意义所在。
注意:无论如何都要尽量避免使用固定的位置值。如果你只是把玩家为之设为(160,32),此时你就做了两个本该避免的假定。第一,假定了屏幕的宽度为320像素,但并不是每个iOS设备都是这样的。第二,你假定了图像的高度是64像素,然而那也是可能会改变的。一旦你开始像这样做假定,整个项目过程中你就会逐渐形成这样的习惯。
用很多代码来定位对象,但长远来看这样制作会节约大量时间。可以将项目部署到不同的设备,也可以使用不同尺寸的图像,无论如何项目都会正常运行。
4.3 加速剂输入
与其他编程语言(如java、C++或C#等)不同,像player.position.x+=value这样的语句对Objective-C中的属性是不起作用的。问题出在Objective-C中属性的工作方式以及Objective-C所基于的C语言的赋值机制。
player.position.x语句实际上是调用了position的getter方法[player position],这意味着你实际上获得了一个临时的position值,并试图改变这个临时的CGPoint对象的x成员变量。但之后这个临时的CGPoint对象会被丢弃。于是position的setter方法[player setPosition]就不会自动被调用了。所以只能直接对player.position进行赋值。
4.4 首次测试运行
如果尚未在Xcode中为这个项目安装你的开发授权,将会产生CodeSign错误。在iOS设备上运行程序时需要代码签名证书。
4.5 玩家速度
实现加速与减速概念不在于直接修改玩家的位置值,而是使用单独的CGPoint变量作为速度矢量。每次接收到一个加速计事件时,速度矢量就加上从加速计得到的输入。当然,这意味着我们得把速度限制在一个任意的最大值内,否则减起速来就要花点时间了。不管有没有接收到加速计的输入,在每一帧都把速度加到玩家位置上。
注意:为什么不使用动作来移动玩家精灵呢?无论何时你需要频繁地——如,每秒数次——改变对象的速度或方向,使用move动作都不是一个好的选择。动作适用于相对使用周期较长的对象,所以频繁创建新对象在分配释放内存上增加了额外开销,这会使游戏性能大幅下降。
更糟糕的是,如果不为动作留出一点时间,动作是不会执行的。这就是在每帧添加新动作来替换前一个却没有任何效果的原因。
注意:imageWidthHalved的是用contentSize的宽乘以0.5而不是除以2得到的。这是个有意的选择,而且两者结果相同,因为任何除法都可以被改写成乘法的形式。
update方法在每一帧都会被调用,而在每帧都调用的代码应该以最高速度运行,并由于iOS设备的ARM CPU不支持硬件上的除法运算,因此乘法运算通常要更快一些。
4.6 添加障碍物
获取图像尺寸最简单的方法就是创建一个临时的CCSprite对象。
将初始化精灵和配置精灵分开处理的原因在于:游戏总会结束,之后游戏将被重置。最为高效的做法就是将所有游戏对象移动到它们的初始位置。然而,一旦游戏趋于复杂,这种做法将不具备可行性。最终,最简单的做法就是以玩家为代价重新加载全部场景。
提示:
如果不是绝对必要的话,为了节约CPU资源,最好不要在for或其他循环语句中使用方法调用作为循环条件。
4.7 碰撞检测
4.8 得分标签
CCLabel只在频繁更改其字符串时才会运行缓慢。如果一次创建一个CCLable对象并永不更改,那么它使用起来就会和相同尺寸的CCSprite对象一样快。
4.9 CCBitmapFontAtlas与Hiero简介
注意:在游戏中使用位图字体是个很棒的选择,但位图字体也有很大的不足之处。任意位图字体的大小都是固定的。如果需要同一字体的不同字号,可以缩放CCBitmapFontAtlas——但这样会损失图像质量。你还可以另外创建一个与原来字体大小不同的字体文件,但是这样会使用更多内存,因为即使只有字体大小不同,每个位图字体也都有其特有的纹理。
注意:如果使用CCBitmapFontAtlas显示字符,当某些字符在.fnt文件中无效时,将会跳过这些字符而不显示它们。
4.10 添加音频
cocos2d中播放音频文件最好,同事也是最简单的方法是使用SimpleAudioEngine。音频文件支持并不属于cocos2d的组成部分;它是CocosDenshion的主要部分,与物理引擎一样,同属于cocos2d的第三方插件。因此你必须在CocosDenshion音频功能时添加相应的文件。
至于音乐,MP3文件是首选。注意,一次只能在后台播放一个MP3文件。
4.11 移植到iPad
因为所有的位置坐标都考虑到了屏幕的尺寸,所以将游戏放大到iPad的大屏幕上运行应该不会有问题。
4.12 本章小结
<!--EndFragment-->
发表评论
-
[转]解决 Xcode 删除文件后 missing file 警告
2014-03-19 18:19 1129转自:http://www.oschina.net/ques ... -
CocoStudio简介
2014-03-05 19:19 1412一、概述 1.1.功能简介 CocoS ... -
xcode5预览版下载地址
2013-06-16 09:56 22211.xcode5预览版下载地址 http://adcdo ... -
解决提交应用到AppStore时,提示UUID及UIDevice错误
2013-06-04 03:34 22621.如果使用了Admob,更新到最新版本6.4.2,删除Add ... -
解决Could not instantiate class named NSLayoutConstraint
2013-02-17 10:22 1422点击xib或storyboard文件,在右边的 inspect ... -
objective-c的arc项目中使用不支持arc的依赖库时编译错误的解决
2013-02-06 14:04 1166在Target->build phases->Co ... -
xcode4.6下载地址
2013-02-04 12:08 3092http://adcdownload.apple.com/De ... -
Mac上的DMG与ISO互转
2013-01-14 14:59 11661.把DMG转为ISO hdiutil convert /p ... -
设置ios中DatePicker的日期为中文格式
2012-12-18 18:12 72451.在模拟器中的“设置”-“通用”-“多语言环境”-“语言”设 ... -
Xcode 错误- Could not launch app - No such file or directory Error.
2012-12-14 11:50 1848通常发生在联机调试过程中,新旧工程交替测试 解决方 ... -
UIPickerView控件中自定义显示的字体大小及样式
2012-12-14 00:21 17784通过覆盖如下方法实现 - (UIView *)pickerV ... -
Flurry analytics SDK集成步骤及功能简介
2012-12-13 11:48 15388Flurry analytics SDK集成步骤及功能 ... -
Xcode4中显示“Line Numbers”行号
2012-12-11 10:46 1123Xcode4中显示“Line Numbers”行号 1 ... -
ios代码备忘
2012-12-09 00:23 14511.自定义导航栏返回按钮 self.navigationIt ... -
iOS OpenSource Library Collection
2012-12-07 17:45 1347转自:http://www.cppblog.com/inkcp ... -
ios内置付费IAP校验
2012-12-07 15:50 1582参考链接:http://developer.apple.com ... -
ios应用中集成多盟广告墙
2012-12-06 16:59 35491.下载广告墙SDK最新版 ... -
ios 导航栏、工具栏、tab栏图标大小
2012-12-06 16:50 11286工具栏和导航栏上的图标尺寸应如下所示: 对于iPhoe和iP ... -
【转】Google Admob 广告最佳做法
2012-11-13 15:40 6572转自:https://developers.google.co ... -
【转】Google AdMob 广告 iOS 初级指南
2012-11-13 15:37 1527转自:https://developers.google.co ...
相关推荐
【cocos2d 切水果游戏】是一款基于cocos2d和box2d游戏引擎开发的手机游戏,模仿了流行的“切西瓜”玩法。在这个游戏中,玩家需要通过滑动屏幕来切割屏幕上飞过的各种水果,尽可能多地得分,同时避免切割到炸弹等负面...
Cocos2d-x 是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多平台的游戏开发。3.x版本是其发展中的一个重要阶段,引入了多项优化和新特性,旨在提高开发效率和性能。 本书首先会介绍...
在Cocos2d-x中,我们可以使用工具如cocos console或第三方工具如DragonBones来创建一个资源包(.plist和.bin文件),将图片、XML、TXT等文件整合在一起。这个打包过程可以有效地减少游戏启动时的加载时间,同时为...
在游戏开发领域,cocos2d-x是一个广泛使用的2D游戏开发框架,尤其适用于跨平台的游戏开发。本教程将深入探讨如何利用cocos2d-x2.0版本实现一款简单的射击游戏。教程由知名讲师沈大海指导,通过实例教学,帮助开发者...
第四章《你的第一个游戏(修正错误)》是实践环节,通过一个简单的游戏实例,讲解如何编写游戏逻辑,处理碰撞检测,以及调试和优化代码。这个章节强调了错误处理和调试技巧,这对于任何开发者来说都是至关重要的。 ...
Cocos2d-x是一个跨平台的2D游戏开发框架,由C++编写,支持iOS、Android、Windows等多个操作系统。它以其高效、易用的特点,深受游戏开发者喜爱。 在这款游戏中,你可以看到Cocos2d-x的强大功能被充分展示。首先,...
`Default.png`是应用的启动界面,是用户首次打开游戏时看到的第一个画面。`Resources`目录下包含了游戏的所有资源文件,如图像、音频、纹理等,这些是构建游戏视觉效果的关键部分。开发者可以在这个目录中找到连连看...
第1章 开始前的准备工作 1 第2章 你的第一款iPhone游戏:垂直射击游戏 38 第3章 Cocos2D核心类 69 第4章 Cocos2D中的动作、特效与动画 152 第5章 Cocos2D中的文本渲染系统 229 共19章
《cocos2d-x3.2《魔塔》游戏源码》是一款基于cocos2d-x 3.2版本开发的2D角色扮演游戏,它展示了如何利用这一强大的游戏引擎来构建一个完整的游戏项目。cocos2d-x是一个开源的游戏开发框架,支持多种平台,包括iOS、...
Cocos2d-Java跨平台游戏引擎 Cocos2d-Java是基于Cocos2d-X,使用Java语言来开发Cocos2d跨平台游戏的引擎,和-lua,-js的api风格相近,方便快捷,便于习惯Java的开发者开发跨平台游戏。 知识点一:Cocos2d-Java的...
设置好项目后,可以创建第一个Scene,这是Cocos2d中的主要游戏屏幕。 3. **理解场景和层**:在Cocos2d中,Scene是游戏的主要容器,类似于电影的场景。Layer则用于组织游戏的不同部分,比如游戏逻辑、用户界面等。你...
在Cocos2D-x游戏开发中,音乐播放是至关重要的一个环节,它为游戏增添了氛围,增强了用户体验。Cocos2D-x是一个用C++编写的开源游戏开发框架,广泛应用于移动平台,如iOS、Android、Windows Phone等。本文将深入探讨...
2. **第一个项目**:引导读者创建并运行第一个简单的Cocos2d-x项目,介绍基本的HelloWorld示例。 3. **绘图与图像处理**:讲解如何绘制2D图形、精灵(Sprite)以及使用Tiled地图编辑器创建游戏地图。 4. **动画和...
Cocos2d-x是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本书以C++语言为主要编程工具,详细介绍了如何利用Cocos2d-x进行游戏开发。 首先,Cocos2d-x的基础知识是必须...
这部分会讲解Cocos2d-x的项目结构,如何搭建开发环境,并引导读者进行第一个Hello World项目的创建,从而对Cocos2d-x有一个基本的认识。 接下来,"Cocos2d-x基础知识学习"部分会详细讲解Cocos2d-x的基本概念,包括...
Cocos2d-x 是一个跨平台的游戏开发框架,广泛应用于2D游戏的制作,尤其在移动设备上表现卓越。它提供了丰富的功能,如图形渲染、动画处理、物理引擎支持、音效管理等,使得开发者可以轻松构建各种类型的游戏,包括...
"默认第一个模板"通常是指cocos2d-x新项目创建时提供的基础结构。这个模板包含了基本的游戏入口、主循环、渲染循环以及一些基本的示例代码,帮助开发者快速上手。例如,`HelloWorldScene`类是项目中的核心场景,包含...
cocos2d-x是一个基于MIT许可证的开源游戏引擎,它以快速、简单且功能强大的特性闻名,允许开发者使用C++、Lua和JavaScript进行跨平台开发,支持包括iOS、Android、Windows Phone、Blackberry以及Tizen在内的多个平台...
《精通COCOS2D-X游戏开发进阶卷》是一本深入探讨Cocos2d-x游戏引擎的专业书籍,旨在帮助开发者提升在Cocos2d-x框架下的游戏制作技能。Cocos2d-x是一款广泛使用的开源游戏开发框架,它基于C++,同时也支持Lua和...
cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这个“cocos2d-x-3.8.zip”压缩包包含的是cocos...