本节书摘来异步社区《Cocos2d 跨平台游戏开发指南(第2版)》一书中的第2章,第2.5节,作者: 【印度】Siddharth Shekar(谢卡)译者: 武传海 责编: 胡俊英,更多章节内容可以访问云栖社区“异步社区”公众号查看。
当按下play按钮时,游戏应该切换到另一个场景,为此我们需要创建一个新场景,以便从原来的场景切换到新场景。首先,让我们学习一下如何创建一个场景。
现在,让我们添加gameplay场景。在第1章中,我们已经学习过如何创建文件,采用相同方法,创建GamePlayScene类文件。
如上,我创建了一个名为GamePlayScene类。GamePlayScene.h文件中包含的代码如下:
#import "CCScene.h" @interface GameplayScene : CCNode +(CCScene*)scene; -(id)initWithLevel:(NSString*)lvlNum @end GamePlayScene.m文件包含如下代码: #import "GameplayScene.h" #import "cocos2d-ui.h" @implementation GameplayScene +(CCScene*)scene{ return[[self alloc]initWithLevel:lvlNum]; } -(id)initWithLevel:(NSString*)lvlNum{ if(self = [super init]){ CGSize winSize = [[CCDirector sharedDirector]viewSize]; //Basic CCSprite - Background Image CCSprite* backgroundImage = [CCSprite spriteWithImageNamed:@ "Bg.png"]; backgroundImage.position = CGPointMake(winSize.width/2, winSize.height/2); [self addChild:backgroundImage]; CCLabelTTF *mainmenuLabel = [CCLabelTTF labelWithString:@"Gameplay Scene" fontName:@"AmericanTypewriter-Bold" fontSize: 36.0f]; mainmenuLabel.position = CGPointMake(winSize.width/2, winSize. height * 0.8); self addChild:mainmenuLabel]; CCLabelTTF *levelNumLabel = [CCLabelTTF labelWithString:lvlNum fontName:@"AmericanTypewriter-Bold" fontSize: 24.0f]; levelNumLabel.position = CGPointMake(winSize.width/2, winSize. height * 0.7); [self addChild:levelNumLabel]; CCButton *resetBtn = [CCButton buttonWithTitle:nil spriteFrame:[CCSpriteFrame frameWithImageNamed:@ "resetBtn_normal.png"] highlightedSpriteFrame:[CCSpriteFrame frameWithImageNamed:@ "resetBtn_pressed.png"] disabledSpriteFrame:nil]; [resetBtn setTarget:self selector:@selector(resetBtnPressed:)]; CCLayoutBox * btnMenu; btnMenu = [[CCLayoutBox alloc] init]; btnMenu.anchorPoint = ccp(0.5f, 0.5f); btnMenu.position = CGPointMake(winSize.width/2, winSize.height * 0.5); [btnMenu addChild:resetBtn]; [self addChild:btnMenu]; } return self; } -(void)resetBtnPressed:(id)sender{ CCLOG(@"reset button pressed"); } @endGamePlayScene类与MainScene类相似,但是在其中,我们添加了自定义场景和init函数,以便向类中传入字符串形式的难度级别数字。
此外,我们也添加了一个用于显示当前游戏难度级别的标签。
同样地,目前GamePlayScene类不做任何事。但是,在接下来的部分中,我们将学习如何从一个场景过渡到gameplay场景,其中会显示我们当前选择的游戏难度级别。
相关资源:敏捷开发V1.0.pptx