ios游戏开发--cocos2d学习(2)
来源:互联网 发布:如何进行seo 编辑:程序博客网 时间:2024/05/16 02:22
- 单例:cocos2d很好的利用了单例设计模式,单例是在程序生命周期里只被实例化过一次的类,为了确保这一点,我们利用类的一个静态方法来生成和访问对象,就是我们已经见过的的以“shared”开头的方法,而不是用alloc/init初始化方法。如OC中的UIApplication对象,我们只能通过sharedApplication来共享这个对象,而不是创建它,它是一个单例对象,只有一个,管理全局程序。cocos2d中有一些常用到的cocos2d单例类,最常用的就是CCDirector(导演类):CCDirector*sharedDirector = [CCDirector sharedDirector];
- 场景图:
- CCNode:一个最重要的类。
以下是一些处理子节点的方法:
生成一个新的节点 :
CCNode* childNode = [CCNode node];
将新节点添加为子节点:
//新节点作为一个已有节点的子节点(如之前的武器节点附加在玩家节点上)
[myNode addChild:childNode z:0tag:123]; 获取子节点://"getChildByTag:"
CCNode* retrievedNode = [myNodegetChildByTag:123];通过tag删除子节点;cleanup会停止任何运行中的动作: [myNode removeChildByTag:123 cleanup:YES];
通过节点指针删除节点:
[myNode removeChild:retrievedNode];
删除一个节点的所有子节点:
[myNode removeAllChildrenWithCleanup:YES]; 从myNode的父节点删除myNode:
[myNode removeFromParentAndCleanup:YES ];
- 动作(Actions):贯穿整个游戏的核心
//闪烁动作
CCAction* action =[CCBlink actionWithDuration:10blinks:20]; action.tag = 234;
//旋转动作
CCRotateBy *rotateBy=[CCRotateBy actionWithDuration:20angle:360];
//移动动作
CCMoveTo *moveTo=[CCMoveTo actionWithDuration:3position:CGPoint(200,300)];
//除了动作本身,还可以给动作添加效果,如:逐渐加速、无限重复
1、重复-CCRepeatForever*repeat=[CCRepeatForever actionWithAction:myAction];
2、逐渐加速-CCEaseInOut*ease=[CCEaseInOut actionWithAction:myAction];
//也可以对某个节点施加一系列动作,使用动作序列让其按顺序执行
CCSequence *sequence=[CCSequenceactions:action1,action2,action3,nil];
CCRepeatForever*repeat=[CCRepeatForever actionWithAction:sequence];
运行这个动作: [myNode runAction:action];
动作也可定义标记tag,然后用tag获取:
CCAction* retrievedAction =[myNode getActionByTag:234]; 你可以用tag或动作指针停止相关联的动作:
[myNode stopActionByTag:234];[myNodestopAction:action];
你可以停止所有在此节点上运行的动作: [myNode stopAllActions];
- 预定信息:类似于OC中的时间片,每隔一段时间就会调用一次方法,只不过开启时间片是在预定里:(个人理解......)
{
[self schedule:@selector(myMethods)interval:0.1f];//interval:时间间隔(秒)
}
使用selector时,最好开启报警设置Build->UndeclaredSelector打钩,保证方法选择正确。
- 场景CCScene
+(id) scene
{
CCScene *scene = [CCScene node];
CCLayer* layer = [HelloWorld node];
[scene addChild:layer];
return scene;
}
1)第一个创建场景的地方是在AppDelegate中directorDidReshapeProjectio n中:
[[CCDirector sharedDirector] runWithScene:[HelloWorld scene]];
2)在其它情况下,用replaceScene方法来替换已有的场景:
[[CCDirector sharedDirector] replaceScene:[HelloWorld scene]];
3)还有另外两个方法:pushScene(推进场景)和popScene(弹出场景)
但是最好是对“一个”常用的场景采用这种方式,否则如果多个场景都这样推进弹出,最后可能忘记哪个推进了哪个弹出了,导致内存使用浪费。
- 过渡效果CCTransitionScene:尽量不用,因为玩家不喜欢,耽误时间
简单介绍一下。所有过渡效果的类都继承自CCTransitionScene。
CCFadeTransition*tran=[CCFadeTransition transitionWithDuration:1 scene:[myScene scenewithColor:ccWHITE];//白色渐隐到myScene场景
别忘记了改变之前要转到myScene的原场景,这时要
[[CCDirector sharedDirector] replaceScene:tran];
- ios游戏开发--cocos2d学习(2)
- ios游戏开发--cocos2d学习(1)
- ios游戏开发--cocos2d学习(3)
- 书评:iOS cocos2d 2游戏开发实战
- iOS cocos2d 2游戏开发实战
- [ IOS-Cocos2d-x 游戏开发] - Lua 开发之一(Lua-基础语言学习)
- 【iOS-Cocos2d游戏开发】cocos2d 坐标系使用
- 【iOS-Cocos2d游戏开发】cocos2d 坐标系使用
- 【iOS-Cocos2d游戏开发之二】Cocos2D 游戏开发资源贴(教程以及源码)
- 【iOS-Cocos2d游戏开发之二】Cocos2D 游戏开发资源贴(教程以及源码)
- 【iOS-Cocos2d游戏开发之二】Cocos2D 游戏开发资源贴(教程以及源码)
- 《iOS游戏编程之从零开始—Cocos2d-x与cocos2d引擎游戏开发(配光盘)》
- iOS 5 cocos2d游戏开发实战(第2版)
- iOS cocos2d 2游戏开发实战(第3版)
- iOS cocos2d 2游戏开发实战(第3版)
- iOS cocos2d-X之游戏开发环境搭建(一)
- 游戏开发学习-Cocos2d-x学习(一) HelloWorld 开始
- 【cocos2d-x IOS游戏开发-捕鱼达人2】cocos2d-x简介与开发环境搭建
- 关于大数据的收集
- C++ 经典问题之交换
- GTK编程基础-----框架、比例框架、分栏窗口构件
- 人生如水的七种境界
- ios游戏开发--cocos2d学习(1)
- ios游戏开发--cocos2d学习(2)
- ios游戏开发--cocos2d学习(3)
- Eclipse快捷键大全
- acm入门资料
- hdu 4352 XHXJ's LIS --- 数位dp 状态压缩
- UVa 10785 疯狂的命理学家
- 九度OJ_1488
- 最基础的java socket聊天程序应该烂熟于心
- Android Theme的设置