学习cocos2d --- 场景创建
2012-09-24 12:46
423 查看
在我们创建一个cocos-2d模板之后,系统自动生成一个场景Demo,运行结果显示HelloWord
创建一个cocos2d ios工程
![](http://img.my.csdn.net/uploads/201304/12/1365775208_3496.png)
运行结果,我们点击Achievments 和 LeaderBoard 会分别跳转到其他场景
![](http://img.my.csdn.net/uploads/201304/12/1365775213_5814.png)
![](http://img.my.csdn.net/uploads/201304/12/1365775219_3430.png)
![](http://img.my.csdn.net/uploads/201304/12/1365775225_7705.png)
创建工程里面目录结构
![](http://img.my.csdn.net/uploads/201304/12/1365775260_8693.png)
上面的六个.h和.m文件如果需要实现某功能是需要开发者在里面编辑代码的,Resouces文件夹用于存放图片,声音文件文字文件plist文件等文件,这样组织便于我们进行管理工程里面文件;libs下的文件就是cocos2d引擎了,存放的是源文件,因为它属于开源,所以可以看到他底层实现原理;还有常用的framework框架
生成的第一个HelloWord代码实现全都在HelloWorldLayer.h HelloWorldLayer.h和HelloWorldLayer.m文件中-(id)initf方法中,贴上他的源代码
刚开始接触,里面很多类都不知道,但是能看懂大部分代码作用,工程里面自动添加有句释,又容易理解些
现在我们创建一个自己的场景,
在cocos-2d_2文件下右键,选择New File
![](http://img.my.csdn.net/uploads/201304/12/1365775332_8114.png)
出现CCNode Class ,
![](http://img.my.csdn.net/uploads/201304/12/1365775278_2821.png)
点击Next,选择Subclass of CCLayer,在Next,新建文件名为MyScenen
![](http://img.my.csdn.net/uploads/201304/12/1365775323_3658.png)
在Myscene.h里面添加
+(CCScene *) scene;方法,在MyScene.m实现
再到IntroLayer.h文件中添加头文件,在IntrolLayer.m中最后面修改一个方法 -(void) makeTransition:(ccTime)dt ,把HelloWorldLayer替换成MyScene
此时我们可以删除HelloWirldLayer文件运行结果是一个黑屏,因为在场景中我们没有添加任何东西,
![](http://img.my.csdn.net/uploads/201304/12/1365775479_5960.png)
现在在场景上添加一个Label
运行效果
![](http://img.my.csdn.net/uploads/201304/12/1365775494_4858.png)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 现在在让这个Label有点动态效果,当点击屏幕时候切换字体大小 在-(id)init方法中添加两行代码
事件方法
看一下运行效果,字体大小都是随机的
![](http://img.my.csdn.net/uploads/201304/12/1365775508_2899.png)
![](http://img.my.csdn.net/uploads/201304/12/1365775513_1437.png)
源代码:http://download.csdn.net/detail/duxinfeng2010/4592145
创建一个cocos2d ios工程
![](http://img.my.csdn.net/uploads/201304/12/1365775208_3496.png)
运行结果,我们点击Achievments 和 LeaderBoard 会分别跳转到其他场景
![](http://img.my.csdn.net/uploads/201304/12/1365775213_5814.png)
![](http://img.my.csdn.net/uploads/201304/12/1365775219_3430.png)
![](http://img.my.csdn.net/uploads/201304/12/1365775225_7705.png)
创建工程里面目录结构
![](http://img.my.csdn.net/uploads/201304/12/1365775260_8693.png)
上面的六个.h和.m文件如果需要实现某功能是需要开发者在里面编辑代码的,Resouces文件夹用于存放图片,声音文件文字文件plist文件等文件,这样组织便于我们进行管理工程里面文件;libs下的文件就是cocos2d引擎了,存放的是源文件,因为它属于开源,所以可以看到他底层实现原理;还有常用的framework框架
生成的第一个HelloWord代码实现全都在HelloWorldLayer.h HelloWorldLayer.h和HelloWorldLayer.m文件中-(id)initf方法中,贴上他的源代码
// on "init" you need to initialize your instance -(id) init { // always call "super" init // Apple recommends to re-assign "self" with the "super's" return value if( (self=[super init]) ) { // create and initialize a Label CCLabelTTF *label = [CCLabelTTF labelWithString:@"Hello World" fontName:@"Marker Felt" fontSize:64]; // ask director for the window size CGSize size = [[CCDirector sharedDirector] winSize]; // position the label on the center of the screen label.position = ccp( size.width /2 , size.height/2 ); // add the label as a child to this Layer [self addChild: label]; // // Leaderboards and Achievements // // Default font size will be 28 points. [CCMenuItemFont setFontSize:28]; // Achievement Menu Item using blocks CCMenuItem *itemAchievement = [CCMenuItemFont itemWithString:@"Achievements" block:^(id sender) { GKAchievementViewController *achivementViewController = [[GKAchievementViewController alloc] init]; achivementViewController.achievementDelegate = self; AppController *app = (AppController*) [[UIApplication sharedApplication] delegate]; [[app navController] presentModalViewController:achivementViewController animated:YES]; [achivementViewController release]; } ]; // Leaderboard Menu Item using blocks CCMenuItem *itemLeaderboard = [CCMenuItemFont itemWithString:@"Leaderboard" block:^(id sender) { GKLeaderboardViewController *leaderboardViewController = [[GKLeaderboardViewController alloc] init]; leaderboardViewController.leaderboardDelegate = self; AppController *app = (AppController*) [[UIApplication sharedApplication] delegate]; [[app navController] presentModalViewController:leaderboardViewController animated:YES]; [leaderboardViewController release]; } ]; CCMenu *menu = [CCMenu menuWithItems:itemAchievement, itemLeaderboard, nil]; [menu alignItemsHorizontallyWithPadding:20]; [menu setPosition:ccp( size.width/2, size.height/2 - 50)]; // Add the menu to the layer [self addChild:menu]; } return self; }
刚开始接触,里面很多类都不知道,但是能看懂大部分代码作用,工程里面自动添加有句释,又容易理解些
现在我们创建一个自己的场景,
在cocos-2d_2文件下右键,选择New File
![](http://img.my.csdn.net/uploads/201304/12/1365775332_8114.png)
出现CCNode Class ,
![](http://img.my.csdn.net/uploads/201304/12/1365775278_2821.png)
点击Next,选择Subclass of CCLayer,在Next,新建文件名为MyScenen
![](http://img.my.csdn.net/uploads/201304/12/1365775323_3658.png)
在Myscene.h里面添加
+(CCScene *) scene;方法,在MyScene.m实现
+(CCScene *)scene { // +(id)node 静态初始化 CCScene *scene = [CCScene node]; MyScene *layer = [MyScene node]; // 把MyScene对象layer添加到CCScene对象中 [scene addChild:layer]; // 把CCScene对象返回给调用者 return scene; }
再到IntroLayer.h文件中添加头文件,在IntrolLayer.m中最后面修改一个方法 -(void) makeTransition:(ccTime)dt ,把HelloWorldLayer替换成MyScene
-(void) makeTransition:(ccTime)dt { [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[MyScene scene] withColor:ccWHITE]]; }
此时我们可以删除HelloWirldLayer文件运行结果是一个黑屏,因为在场景中我们没有添加任何东西,
![](http://img.my.csdn.net/uploads/201304/12/1365775479_5960.png)
现在在场景上添加一个Label
-(id) init { if( (self=[super init]) ) { // 创建一个标签,设置字体样式和大小 CCLabelTTF *label = [CCLabelTTF labelWithString:@"创建一个标签" fontName:@"Marker Felt" fontSize:64]; // 获取主窗口大小 CGSize size = [[CCDirector sharedDirector] winSize]; // 设置标签的场景位置 label.position = ccp( size.width /2 , size.height/2 ); // 把标签添加到这个 [self addChild: label]; } return self; }
运行效果
![](http://img.my.csdn.net/uploads/201304/12/1365775494_4858.png)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 现在在让这个Label有点动态效果,当点击屏幕时候切换字体大小 在-(id)init方法中添加两行代码
-(id) init { if( (self=[super init]) ) { // 创建一个标签,设置字体样式和大小 CCLabelTTF *label = [CCLabelTTF labelWithString:@"创建一个标签" fontName:@"Marker Felt" fontSize:64]; // 获取主窗口大小 CGSize size = [[CCDirector sharedDirector] winSize]; // 设置标签的场景位置 label.position = ccp( size.width /2 , size.height/2 ); // 把标签添加到这个 [self addChild: label]; // 设置标签Tag属性,数字可以随便设,但是要是唯一的 label.tag = 8; // 添加触摸处理事件 self.isTouchEnabled = YES; } return self; }
事件方法
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 通过tag属性访问Label标签 CCNode *node = [self getChildByTag:8]; // 验证返回对象是否一致 NSAssert([node isKindOfClass:[CCLabelTTF class]],@"node is not a CCLabelTTF"); // 类型转换 CCLabelTTF *label = (CCLabelTTF *)node; // CCRANDOM_0_1();是一个宏定义,用来改变label的scale熟悉 label.scale = CCRANDOM_0_1(); }
看一下运行效果,字体大小都是随机的
![](http://img.my.csdn.net/uploads/201304/12/1365775508_2899.png)
![](http://img.my.csdn.net/uploads/201304/12/1365775513_1437.png)
源代码:http://download.csdn.net/detail/duxinfeng2010/4592145
相关文章推荐
- Cocos2D-X学习3:创建一个新的场景
- 【COCOS2D-X LUA学习】 场景创建
- cocos2d-x学习笔记【一】创建自己的场景类
- cocos2d-x 3.0学习-创建菜单场景
- Cocos2d-x创建和转换场景学习笔记 分类: cocos2d代码编写 2015-07-27 17:38 8人阅读 评论(0) 收藏
- 学习cocos2d-x之路(3)--创建第一个场景
- Cocos2d-x创建和转换场景学习笔记
- Cocos2d-x 3.x学习笔记:猩先生带你打飞机(四)游戏场景:背景与我机的创建、敌机的创建、物理世界构建
- Cocos2d-x学习笔记一 创建场景
- 【Cocos2d-html5游戏引擎学习笔记(7)】CCLayer创建及场景跳转
- 阿J的cocos2d-x学习笔记-元素消消看(二)-主场景的创建
- Cocos2d-x 捕鱼达人游戏学习教程(3)--创建游戏的场景
- cocos2d学习笔记第一章 基础场景创建及基本配置
- cocos2d-x基础学习-创建并替换场景Scene
- 学习cocos2d --- 场景创建
- 如何使用CocosBuilder2.1结合cocos2d-x2.0.3创建动画场景
- Cocos2d-x 3.2 学习笔记(二)创建自定义项目
- cocos2d-x学习之旅(五):1.5 使用eclipse编译cocos2d-x示例项目,创建cocos2d-x android项目并部署到真机
- cocos2d-x学习之场景间切换效果
- 【Cocos2d-X开发学习笔记】第04期:渲染框架之场景类(CCScene)的使用