ios游戏开发--cocos2d学习(1)
创建一个cocos2d项目,直接运行,效果如图:

左下角显示当前的帧率,即每秒的帧数,更新屏幕的频率。
---------------------------------------------------------------------------------------------------------------
有几个概念必须要理解:
1.导演类:CCDirector,所有类的父类,控制整个游戏项目的运行,包括场景、人物等的显示.
2.层和布景:CCLayer和CCScene,都继承自CCNode节点类。CCScene类似于现实生活中的场景,在这个场景中又可以铺垫其他的事件,如一个舞台是一个场景,在这个场景中可以上演话剧、小品、唱歌等各种节目,那么这节目可以看作是一个CCLayer,我可以创建唱歌层:SingCCLayer,让它继承CCLayer,然后添加元素,就是演员。一个节点CCNode即是一个可视化的元素,如可以创建一个CCLabelTTF标签,放入CCLayer中,或者按钮等,丰富自定义的场景布局。
-------------------------------------------------------------------------------------------
--基础代码讲解--
(1)打开HelloWorldLayer.h头文件,你可以看到HelloWorldLayer类是继承自
CCLayer类的。
CCScene只是一个抽象的概念,默认的设置场景的方法是在你的类里面使用
一个静态初始化方法(static initializer)+(id) scene。此方法会生成一
个CCScene对象,并且将当前自定义层(这里指的是HelloWorldLayer)的对象添加到场景节点中。几乎在任何情况
下,CCScene都是在这里创建和使用的。以下是一个通用的+(id)
scene方法:
+(CCScene *) scene
{
//
创建一个场景,注意场景Scene和层Layer以及各个元素都是CCNode的子类,创建对象时均可用类方法:node
CCScene *scene = [CCScene node];
// 创建一个本类的一个对象
HelloWorldLayer *layer = [HelloWorldLayer node];
// 在场景中添加自定义层
[scene addChild: layer];
// return the scene
return scene;
}
(2)之后就是层Layer的初始化并显示在场景中,跟OC中一样,使用-(id)init方法:
-(id) init
{
if( (self=[super init]) ) {
//
生成和初始化一个标签对象,在2d中标签有3种,CCLabelTTF是其中一种
CCLabelTTF *label = [CCLabelTTF labelWithString:@"Hello
World" fontName:@"Marker
Felt" fontSize];
// 从当前CCDirector得到当前屏幕的尺寸
CGSize size =
[[CCDirector
sharedDirector]
winSize];
// 将标签定位在屏幕中央
label. , size. );
// 将标签添加到视图层中
[self addChild: label];
return self;
}
(3)下面在init方法中做一点小小修改,让它感觉起来是我们动手做过的小程序,而不是一个死的模板。
首先,在init方法中做两处修改:一是启用触摸输入,二是设置一个以后可以用来调用对象的标记:tag。在列表2-3中标出了这两处修改:
-(id) init
{
if( (self=[super init]) ) {
// 生成和初始化一个标签对象,在2d中标签有3种,CCLabelTTF是其中一种
];
// 从当前CCDirector得到当前屏幕的尺寸
CGSize size =
[[CCDirector sharedDirector] winSize];
// 将标签定位在屏幕中央
label.position = ccp(
size. ,
size. );
// 将标签添加到视图层中
[self addChild:
label];
//添加标签tag
label.;//可以用任何数字,但建议用常量
//启动可触摸模式
self.isTouchEnabled=YES;//这样,点击屏幕,相关触摸函数才会响应触摸
return self;
}
(4)响应触摸的函数:
-(void)ccTouchesBegan:(NSSet
*)touches withEvent:(UIEvent *)event{
//CCLabelTTF *label=(CCLabelTTF *)[self
getChildByTag:10];
CCNode
*node=[];
//验证返回的节点是CCLabelTTF类的对象
NSAssert([node isKindOfClass:[CCLabelTTF class]], @"node is not a
CCLabelTTF!");
CCLabelTTF
*label=(CCLabelTTF
*)node;
label.scale=CCRANDOM_0_1();//我们使用了cocos2d
的CCRANDOM_0_1()宏来改变标签的大小属性,使它在0和1之间变化。每次你点
击屏幕都会让标签尺寸发生变化.
}
ios游戏开发--cocos2d学习(1)的更多相关文章
- ios游戏开发--cocos2d学习(2)
在第一节中简单介绍了2d项目模板HelloWorld的基础代码,并做了一点小小的改变,像触摸接收.旋转.移动和颜色转变序列CCSequence的使用等等,2d本身封装好了很多方便使用的动作,只需要调用 ...
- ios游戏开发--cocos2d学习(3)
------------继续上一节的内容. “接收触摸事件”: CCLayer类是用来接收触摸输入的.不过你要首先启用这个功能才可以使用它. self.isTouchEnabled = YES;//此 ...
- 开发者经验谈:如何一天时间搞定iOS游戏开发?
开发者经验谈:如何一天时间搞定iOS游戏开发? 在一天时间里将完成iPhone游戏开发由梦想变为现实? 本文作者给出了从创意转变成现实的详细答案.使用苹果原生游戏引擎SpriteKit,遵循一定的原则 ...
- ios游戏开发 Sprite Kit教程:初学者 1
注:本文译自Sprite Kit Tutorial for Beginners 目录 Sprite Kit的优点和缺点 Sprite Kit vs Cocos2D-iPhone vs Cocos2D- ...
- CocosCreator游戏开发---菜鸟学习之路(一)
PS(废话): 辞职后在家好久好久了,久到经济不允许了,接着就准备再次出去找工作了,然而工作哪有那么好找,特别是像我这种菜鸟.而且我还准备转行,准备去做游戏,技能等级接近于0,那工作就更难找了.既然如 ...
- cocos2d-x ios游戏开发初认识(六) 渲染的优化
做程序开发肯定要考虑到内存的优化,毕竟iphone本身的内存就不是非常大.这一节主要说这个cocos2d开发对内存的优化,详细表如今,既能够对同样的精灵(图片)仅仅渲染一次,也能够对不能的精灵仅仅渲染 ...
- 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C
blog.csdn.net/totogo2010/article/details/8205810 目录(?)[-] 第一课名称 MVC and Introduction to Objective-C ...
- cocos2d-x ios游戏开发初认识(九) 音效、粒子系统与存储
我们知道.一个游戏少不了声音.一些好听的声音会提起你对游戏的兴趣,当然做好听的声音不是我们要学的,我们的目的是把声音在适当的时候放出来.顺便在这节中会说下简单的粒子系统和文件存储. 一.声音的播放: ...
- cocos2d-x ios游戏开发初认识(八) 触摸事件与碰撞检測
玩过植物大战僵尸都知道,要在草坪里放一朵向日葵或者其他的植物仅仅需触摸那个植物将其拖入到想要摆放的位置,这事实上就是这节要写的触摸事件.还能够发现当我们的僵尸出来的时候,我们的小豌豆会发子弹攻击僵尸, ...
随机推荐
- 李洪强iOS开发之【零基础学习iOS开发【01-前言】03-前景和难易度分析
一.iOS开发的前景 2012年3月份,苹果公司的市值已经突破5000亿美元,成为世界上市值最大的公司.5000亿是神马概念呢? 可以帮助陷入欧债危机的8个国家偿还债务 可以买下35个天安门广场.34 ...
- 【Linux常识篇(1)】所谓的正向代理与反向代理
正向代理的概念 正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连 ...
- 服务器端json解析
1.客户端通过http传上来的可定都是json数据啊,json数据传到服务器端,就要通过键值对getkey方法得到具体值,对吧,然后再操控具体值. 2.JSONObject与JSONArray: Js ...
- scanf()函数用法小结
scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息. 其调用格式为: scanf("<格式化字符串>",<地址表>); ...
- 231. Power of Two
题目: Given an integer, write a function to determine if it is a power of two. 链接: http://leetcode.com ...
- C++:用成员初始化列表对数据成员初始化
1.在声明类时,对数据成员的初始化工作一般在构造函数中用赋值语句进行. 例如: class Complex{ private: double real; double imag; public: Co ...
- Nmap扫描原理与用法
Nmap扫描原理与用法 1 Nmap介绍 Nmap扫描原理与用法PDF:下载地址 Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Audit ...
- JS代码片段:一个日期离现在多久了
var dateDiff = function(hisTime,nowTime){ if(!arguments.length) return ''; var arg = arguments, now ...
- CardView官方教程
Create Cards CardView extends the FrameLayout class and lets you show information inside cards that ...
- Android开发之获取时间SystemClock
转载:http://blog.csdn.net/tianfeng701/article/details/7562359 在Andriod中关于线程一部分中经常会遇到计算时间的操作,这里面应用较多的是S ...