《Cocos2d 跨平台游戏开发指南(第2版)》一2.5 添加Gameplay场景

简介:

本节书摘来异步社区《Cocos2d 跨平台游戏开发指南(第2版)》一书中的第2章,第2.5节,作者: 【印度】Siddharth Shekar(谢卡)译者: 武传海 责编: 胡俊英,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.5 添加Gameplay场景

当按下play按钮时,游戏应该切换到另一个场景,为此我们需要创建一个新场景,以便从原来的场景切换到新场景。首先,让我们学习一下如何创建一个场景。

2.5.1 准备工作

现在,让我们添加gameplay场景。在第1章中,我们已经学习过如何创建文件,采用相同方法,创建GamePlayScene类文件。

2.5.2 操作步骤

如上,我创建了一个名为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");
}

@end

2.5.3 工作原理

GamePlayScene类与MainScene类相似,但是在其中,我们添加了自定义场景和init函数,以便向类中传入字符串形式的难度级别数字。

此外,我们也添加了一个用于显示当前游戏难度级别的标签。

同样地,目前GamePlayScene类不做任何事。但是,在接下来的部分中,我们将学习如何从一个场景过渡到gameplay场景,其中会显示我们当前选择的游戏难度级别。

相关文章
|
存储 数据建模 数据库
初探多维表格
最近调研学习了一些多维表格产品,记录一下自己收获的基础认知。在线表格的基础结构是单元格,横向纵向拓展的单元格的集合,就构成了一张工作表。单元格之间可以任意关联,非常灵活。在线表格的适用面很广,能够在数据收集和分析、财会统计等场景发挥重要的作用。在我试图寻找国外的多维表格产品时,发现很少有用「表格」来描述自己的。比如 Airtable 对自己的介绍是:一个构建协同应用的低代码平台。目前国内处于前沿的
1427 0
初探多维表格
|
6月前
|
监控 API 定位技术
App 出海:全渠道营销如何通过性能监控与精准归因实现增长
在App出海竞争加剧的背景下,营销面临流量碎片化和用户体验断层的问题。海外用户决策链路复杂,触点多、周期长且设备场景多样。传统营销归因粗放,性能问题导致用户流失。AppTrace平台通过全链路监控与精准归因体系,整合线上线下数据,优化性能体验,并提供实战案例证明其有效性。最终帮助企业实现数据驱动的渠道优化和全周期用户管理,在海外市场建立核心竞争优势。
|
9月前
|
人工智能 IDE Java
一文彻底拿捏DevEco Studio的实用技巧
本文介绍DevEco Studio 5.0.0的安装与特性,助力高效开发HarmonyOS应用。涵盖快捷键、中文设置、文件注释模板及组件API文档查阅等内容,助你快速上手鸿蒙开发。君志所向,一往无前!
431 0
一文彻底拿捏DevEco Studio的实用技巧
|
9月前
|
机器学习/深度学习 自然语言处理
RWKV-7 2.9B 开源发布!纯 RNN 无 KV cache,支持世界所有语言
RWKV-7 2.9B 开源发布!纯 RNN 无 KV cache,支持世界所有语言
273 0
|
11月前
|
缓存 监控 算法
Python内存管理:掌握对象的生命周期与垃圾回收机制####
本文深入探讨了Python中的内存管理机制,特别是对象的生命周期和垃圾回收过程。通过理解引用计数、标记-清除及分代收集等核心概念,帮助开发者优化程序性能,避免内存泄漏。 ####
263 3
|
12月前
|
JSON API 数据格式
亚马逊的商品详情API接口,亚马逊的商品详情API接口
亚马逊的商品详情API接口(如Amazon Product Advertising API)允许开发者获取商品的详细信息,包括价格、描述、图片URL等。以下是一个示例的亚马逊的商品详情API接口
|
消息中间件 前端开发 JavaScript
探索JavaScript中的事件循环机制:异步编程的核心
【10月更文挑战第12天】探索JavaScript中的事件循环机制:异步编程的核心
233 1
|
存储 监控 算法
Java中的内存管理与垃圾回收机制解析
本文深入探讨了Java编程语言中的内存管理策略和垃圾回收机制。首先介绍了Java内存模型的基本概念,包括堆、栈以及方法区的划分和各自的功能。进一步详细阐述了垃圾回收的基本原理、常见算法(如标记-清除、复制、标记-整理等),以及如何通过JVM参数调优垃圾回收器的性能。此外,还讨论了Java 9引入的接口变化对垃圾回收的影响,以及如何通过Shenandoah等现代垃圾回收器提升应用性能。最后,提供了一些编写高效Java代码的实践建议,帮助开发者更好地理解和管理Java应用的内存使用。
183 3
|
分布式计算 数据可视化 大数据
基于spark的医疗大数据可视化大屏项目
基于spark的医疗大数据可视化大屏项目
385 0
商标注册流程及费用(阿里云商标在线注册申请)
商标注册流程及费用图文教程快速上手笔记,本文以阿里云商标智能注册申请为例,商标智能注册申请需要用户手动填写商标类型、商标名称、商标图样、商标说明及商标分类表选择等操作
1301 2
商标注册流程及费用(阿里云商标在线注册申请)