【cocos2d-x IOS游戏开发-城市跑酷4】设置“道具”:云、路灯、竞技团队
2013-12-07 14:37
645 查看
尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/17187599
<捕鱼达人>回顾
【cocos2d-x
IOS游戏开发-捕鱼达人1】内容介绍
上节回顾
【cocos2d-x
IOS游戏开发-城市跑酷3】读取资源,设置背景层
游戏的元素应该是多种多样的,只有一个背景就略显单调了,这里我们来加入一些道具。
来看下具体的实现:
CCArray 是cocos2dx中充分支持的类。它被用来优化游戏。你可以在cocos2d/Support中找到这个类。
它和苹果的NSMutableArr类相似,但是CCArray的表现力更好一些。
注意:CCArray和CCDictionary类被用来保存cocox2dx的类,然而他们并没有和STL一样强大。因此,没有必要使用CCArray或者CCDictionary来替代你的项目中的一些STL。
CCArray仅仅提供对象包装类的功能
CCArray继承自CCObject类(CCObject的主要目的是自动的回收内存),并且提供一系列接口。
注意点一:
CCArray中有一个remove方法和一个fastRemove方法,看一下源代码可知,remove是一个完全的移除操作,而faseRemove仅仅将当前元素release了,主要的区别点在于向前移动了这个元素之后的元素之后,没有显式的删除元素。代码如下:
faseRemoveObject是快速的,但是它也意味着在CCArray中的对象将会改变位置,那么如果你使用CCArray的排序信息,你不应该使用faseRemoveObject方法。
注意点二:
CCArray初始它的引用计数为1,并且被设置为了autorelease。因此创建CCArray的时候你需要去retain,并且在析构函数中你需要手动的release内存。否则使用过程中可能CCArray已经释放造成错误。
现在看一下具体的使用方法:
下一节:导演说,大家动起来。
<捕鱼达人>回顾
【cocos2d-x
IOS游戏开发-捕鱼达人1】内容介绍
上节回顾
【cocos2d-x
IOS游戏开发-城市跑酷3】读取资源,设置背景层
游戏的元素应该是多种多样的,只有一个背景就略显单调了,这里我们来加入一些道具。
来看下具体的实现:
//加入背景:城市灯火 _background = CCSprite::createWithSpriteFrameName("background.png"); _background->setAnchorPoint(ccp(0,0)); _gameBatchNode->addChild(_background, kBackground);添加路灯:
//设置路灯 _foreground = CCSprite::createWithSpriteFrameName("lamp.png"); _foreground->setAnchorPoint(ccp(0,0)); _gameBatchNode->addChild(_foreground, kForeground);添加云朵:用数组CCArray 存云朵,并设置云朵的位置。
CCArray 是cocos2dx中充分支持的类。它被用来优化游戏。你可以在cocos2d/Support中找到这个类。
它和苹果的NSMutableArr类相似,但是CCArray的表现力更好一些。
注意:CCArray和CCDictionary类被用来保存cocox2dx的类,然而他们并没有和STL一样强大。因此,没有必要使用CCArray或者CCDictionary来替代你的项目中的一些STL。
CCArray仅仅提供对象包装类的功能
CCArray继承自CCObject类(CCObject的主要目的是自动的回收内存),并且提供一系列接口。
注意点一:
CCArray中有一个remove方法和一个fastRemove方法,看一下源代码可知,remove是一个完全的移除操作,而faseRemove仅仅将当前元素release了,主要的区别点在于向前移动了这个元素之后的元素之后,没有显式的删除元素。代码如下:
unsigned int remaining = arr->num - index; if(remaining>0) { memmove((void *)&arr->arr[index], (void *)&arr->arr[index+1], remaining * sizeof(CCObject*)); }
faseRemoveObject是快速的,但是它也意味着在CCArray中的对象将会改变位置,那么如果你使用CCArray的排序信息,你不应该使用faseRemoveObject方法。
注意点二:
CCArray初始它的引用计数为1,并且被设置为了autorelease。因此创建CCArray的时候你需要去retain,并且在析构函数中你需要手动的release内存。否则使用过程中可能CCArray已经释放造成错误。
现在看一下具体的使用方法:
//加入精灵云 CCSprite * cloud; _clouds = CCArray::createWithCapacity(4); _clouds->retain(); float cloud_y; for (int i = 0; i < 4; i++) { //云位置:一低一高一低一高显示 cloud_y = i % 2 == 0 ? _screenSize.height * 0.7f : _screenSize.height * 0.8f; cloud = CCSprite::createWithSpriteFrameName("cloud.png"); cloud->setPosition(ccp (_screenSize.width * 0.15f + i * _screenSize.width * 0.25f, cloud_y)); _gameBatchNode->addChild(cloud, kBackground); _clouds->addObject(cloud);//添加数组元素 }加入一组竞技团队:
//加入一个竞技团队 _jam = CCSprite::createWithSpriteFrameName("jam_1.png"); CCAnimation* animation; animation = CCAnimation::create(); //CCSpriteFrame对应的就是帧,将CCSpriteFrame添加到CCAnimation生成动画数据, //用CCAnimation生成CCAnimate(就是最终的动画动作),最后可以用CCSprite执行这个动作。 CCSpriteFrame * frame; int i; for(i = 1; i <= 3; i++) { //共有3帧,这里用for循环将对应的序列图加入到动画中 char szName[100] = {0}; sprintf(szName, "jam_%i.png", i); frame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(szName); animation->addSpriteFrame(frame); } //设置每两帧间时间间隔 animation->setDelayPerUnit(0.2f / 3.0f); //设置动画结束后是否保留动画帧信息 animation->setRestoreOriginalFrame(false); //设置循环播放次数 (-1:无限循环) animation->setLoops(-1); //由这个动画信息创建一个序列帧动画 _jamAnimate = CCAnimate::create(animation); //保存这个动画 _jamAnimate->retain(); _gameBatchNode->addChild(_jam, kBackground);
下一节:导演说,大家动起来。
相关文章推荐
- 【cocos2d-x IOS游戏开发-城市跑酷3】读取资源,设置背景层
- 【cocos2d-x IOS游戏开发-城市跑酷9】没有各种坑还叫游戏吗
- 【cocos2d-x IOS游戏开发-城市跑酷14】重写触屏[Touch]事件处理机制,响应玩家操作
- 【cocos2d-x IOS游戏开发-城市跑酷6】添加街区元素:墙、屋顶、烟囱
- 【cocos2d-x IOS游戏开发-城市跑酷16】碰撞检测:撞墙 or 从房子上掉下来
- 【cocos2d-x IOS游戏开发-城市跑酷19】游戏效果图及资源引用页
- 【cocos2d-x IOS游戏开发-城市跑酷17】Game Over,主角死亡?+死亡特效:帽子飞起来!
- 【cocos2d-x IOS游戏开发-城市跑酷2】python create_project
- 【cocos2d-x IOS游戏开发-城市跑酷18】统计结果,主角复活Try Again!!
- 【cocos2d-x IOS游戏开发-城市跑酷7】设计烟囱与烟的效果
- 【cocos2d-x IOS游戏开发-城市跑酷12】男一号上场,大家鼓掌!
- 【cocos2d-x IOS游戏开发-城市跑酷15】完善积分板【CCLabelBMFont】
- 【cocos2d-x IOS游戏开发-城市跑酷13】游戏玩法:友情提示:how to play?
- 【cocos2d-x IOS游戏开发-城市跑酷1】跑酷游戏介绍
- 【cocos2d-x IOS游戏开发-城市跑酷10】完善繁荣的城市街区及地形图类
- 【cocos2d-x IOS游戏开发-城市跑酷8】实现街区房子的摆放
- 【cocos2d-x IOS游戏开发-城市跑酷5】导演说:动起来,动起来!
- 【cocos2d-x IOS游戏开发-城市跑酷11】设置菜单层及新的开始
- 【Cocos2d游戏开发之三】CCScene切换的所有特效(27种)以及设置屏幕横竖屏!
- 【Cocos2d游戏开发之七】在cocos2d中添加/删除系统组件,并解决View设置透明会影响View中的其他组件的问题!