`
makeapp628
  • 浏览: 45184 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

十二 手游开发神器 cocos2d-x editor 之游戏暂停悬浮层

阅读更多

进入游戏主场景,游戏需要临时暂停、重新选关、重新玩等等,所以玩家点击暂停按钮,弹出一个选择悬浮层,这一节我们来实现;

 

效果如下:

 

点击右上角游戏暂停;

 

返回回到开始界面;

 

代码下载:http://www.kuaipan.cn/file/id_25348935635744972.htm?source=1

 

 

 

首先创建一个PauseLayer.ccbx,设计如下图,包括一个精灵和三个按钮,一个返回按钮、重新开始按钮、选关按钮;

 

给每一个MenuItem安排点击事件,指定target,图片资源;

 

打开MainLayer.ccbx,添加暂停按钮;

 

 

打开MainLayer.js,首先给暂停按钮事件;

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. MainLayer.prototype.onPauseClicked = function () {   //点击暂停游戏  
  2.     this.pausedLayer = cc.BuilderReader.loadAsNodeFrom("""PauseLayer"this);  
  3.     this.pausedLayer.setPosition(cc.p(0, 0));  
  4.     this.pausedLayer.setZOrder(200);  
  5.     this.rootNode.addChild(this.pausedLayer);  
  6.     this.paused = true;  
  7.     cc.AudioEngine.getInstance().stopMusic();  
  8.     cc.Director.getInstance().pause();  
  9. }  

 

 


然后给返回和重新开始安排点击事件;

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. MainLayer.prototype.onRenewClicked = function () {  //返回到开始界面  
  2.     cc.Director.getInstance().resume();  
  3.     cc.log("onRenewClicked");  
  4.     cc.BuilderReader.runScene("""StartLayer");  
  5. }  
  6.   
  7. MainLayer.prototype.onReplayClicked = function () {  //新游戏  
  8.     cc.Director.getInstance().resume();  
  9.     cc.log("onReplayClicked");  
  10.     cc.BuilderReader.runScene("""MainLayer");  
  11. }  

 

 


MainLayer,js全部代码;

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. //  
  2. // CleanerScoreScene class  
  3. //  
  4.   
  5. var MainLayer = function () {  
  6.     cc.log("MainLayer")  
  7.     this.scoreLabel = this.scoreLabel || {};  
  8.     this.monster = this.monster || {};  
  9.     this.score = 123;  
  10. };  
  11.   
  12. MainLayer.prototype.onDidLoadFromCCB = function () {  
  13.     if (sys.platform == 'browser') {  
  14.         this.onEnter();  
  15.     }  
  16.     else {  
  17.         this.rootNode.onEnter = function () {  
  18.             this.controller.onEnter();  
  19.         };  
  20.     }  
  21.   
  22.     this.rootNode.schedule(function (dt) {  
  23.         this.controller.onUpdate(dt);  
  24.     });  
  25.   
  26.     this.rootNode.onExit = function () {  
  27.         this.controller.onExit();  
  28.     };  
  29.   
  30.     this.rootNode.onTouchesBegan = function (touches, event) {  
  31.         this.controller.onTouchesBegan(touches, event);  
  32.         return true;  
  33.     };  
  34.   
  35.     this.rootNode.onTouchesMoved = function (touches, event) {  
  36.         this.controller.onTouchesMoved(touches, event);  
  37.         return true;  
  38.     };  
  39.     this.rootNode.onTouchesEnded = function (touches, event) {  
  40.         this.controller.onTouchesEnded(touches, event);  
  41.         return true;  
  42.     };  
  43.     this.rootNode.setTouchEnabled(true);  
  44. };  
  45.   
  46. MainLayer.prototype.onEnter = function () {  
  47.     var flowerParticle = cc.ParticleSystem.create("Resources/particles/flower.plist");  
  48.     flowerParticle.setAnchorPoint(cc.p(0.5, 0.5));  
  49.     flowerParticle.setPosition(cc.p(60, 160));  
  50.     flowerParticle.setPositionType(1);  
  51.     this.monster.addChild(flowerParticle);  
  52.   
  53.     cc.AudioEngine.getInstance().playMusic("Resources/sounds/bg_music.mp3"true);  
  54. }  
  55.   
  56. MainLayer.prototype.monsterMove = function (x, y) {  
  57.     this.monster.stopAllActions();  
  58.     cc.AnimationCache.getInstance().addAnimations("Resources/snow_frame.plist");//添加帧动画文件  
  59.     var action0 = cc.Sequence.create(cc.MoveTo.create(5, cc.p(x, y)));  //向前移动  
  60.     var actionFrame = cc.Animate.create(cc.AnimationCache.getInstance().getAnimation("monster"));   //获取帧动画  
  61.     var action1 = cc.Repeat.create(actionFrame, 90000);  
  62.     var action2 = cc.Spawn.create(action0, action1); //同步动画  
  63.     this.monster.runAction(action2);  
  64. }  
  65.   
  66. MainLayer.prototype.createParticle = function (name, x, y) {  
  67.     var particle = cc.ParticleSystem.create("Resources/particles/" + name + ".plist");  
  68.     particle.setAnchorPoint(cc.p(0.5, 0.5));  
  69.     particle.setPosition(cc.p(x, y));  
  70.     particle.setPositionType(1);  
  71.     particle.setDuration(3);  
  72.     this.rootNode.addChild(particle);  
  73. }  
  74.   
  75.   
  76. MainLayer.prototype.onUpdate = function (dt) {  
  77.     this.score += dt;  
  78.     this.scoreLabel.setString(Math.floor(this.score));  
  79. }  
  80.   
  81. MainLayer.prototype.onExitClicked = function () {  
  82.     cc.log("onExitClicked");  
  83. }  
  84.   
  85.   
  86. MainLayer.prototype.onExit = function () {  
  87.     cc.log("onExit");  
  88. }  
  89.   
  90. MainLayer.prototype.onRenewClicked = function () {  //返回到开始界面  
  91.     cc.Director.getInstance().resume();  
  92.     cc.log("onRenewClicked");  
  93.     cc.BuilderReader.runScene("""StartLayer");  
  94. }  
  95.   
  96. MainLayer.prototype.onReplayClicked = function () {  //新游戏  
  97.     cc.Director.getInstance().resume();  
  98.     cc.log("onReplayClicked");  
  99.     cc.BuilderReader.runScene("""MainLayer");  
  100. }  
  101.   
  102. /*MainLayer.prototype.onReturnClicked = function () {  //返回游戏 
  103.  cc.log("onReturnClicked"); 
  104.  if (this.paused) { 
  105.  if (this.pausedLayer) { 
  106.  this.pausedLayer.removeFromParent(); 
  107.  this.pausedLayer = null; 
  108.  } 
  109.  cc.Director.getInstance().resume(); 
  110.  this.paused = false; 
  111.  } 
  112.  }*/  
  113.   
  114. MainLayer.prototype.onPauseClicked = function () {   //点击暂停游戏  
  115.     this.pausedLayer = cc.BuilderReader.loadAsNodeFrom("""PauseLayer"this);  
  116.     this.pausedLayer.setPosition(cc.p(0, 0));  
  117.     this.pausedLayer.setZOrder(200);  
  118.     this.rootNode.addChild(this.pausedLayer);  
  119.     this.paused = true;  
  120.     cc.AudioEngine.getInstance().stopMusic();  
  121.     cc.Director.getInstance().pause();  
  122. }  
  123.   
  124. MainLayer.prototype.onTouchesBegan = function (touches, event) {  
  125.     var loc = touches[0].getLocation();  
  126. }  
  127.   
  128. MainLayer.prototype.onTouchesMoved = function (touches, event) {  
  129.     cc.log("onTouchesMoved");  
  130. }  
  131.   
  132. MainLayer.prototype.onTouchesEnded = function (touches, event) {  
  133.     cc.log("onTouchesEnded");  
  134.     var loc = touches[0].getLocation();  
  135.     cc.AudioEngine.getInstance().playEffect("Resources/sounds/bomb.mp3"false);  
  136.     this.monsterMove(loc.x, loc.y);  
  137.     this.createParticle("around", loc.x, loc.y);  
  138. }  


点击运行,效果图在最上面;

 

 

 

下一篇文章 我会介绍cocos2d-x  editor的选关界面    笔者(李元友)

资料来源:cocos2d-x  editor

分享到:
评论

相关推荐

    Cocos2d-x 3.x游戏开发实战pdf含目录

    《Cocos2d-x 3.x游戏开发实战》是一本深度探讨Cocos2d-x 3.x框架的游戏开发书籍,适合对游戏编程有兴趣的开发者学习。Cocos2d-x 是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多平台的...

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    大富翁手机游戏开发实战基于Cocos2d-x3.2引擎

    资源名称:大富翁手机游戏开发实战基于Cocos2d-x3.2引擎内容简介:李德国编著的《大富翁手机游戏开发实战(基于 Cocos2d-x3.2引擎)》使用Cocos2d-x游戏引擎技术,带领读者一步一步从零开始进行大富翁移动游戏的开发...

    使用cocos2d-x-2.0-2.0.4开发的简单跨平台益智类魔塔小游戏

    《使用cocos2d-x-2.0-2.0.4开发的简单跨平台益智类魔塔小游戏》...通过学习和分析这个项目,开发者不仅可以掌握cocos2d-x的基本用法,还能了解到益智类游戏的设计思路和实现技巧,为自己的游戏开发之路打下坚实的基础。

    Cocos2d-x实战:C++卷(2版)源代码

    《Cocos2d-x实战:C++卷(2版)源代码》这本书是关于使用Cocos2d-x游戏引擎进行游戏开发的专业指南。Cocos2d-x是一个开源的、跨平台的游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本书以C++语言...

    cocos2d-x API中文文档

    【cocos2d-x API中文文档】是一份详尽的资料,主要涵盖了cocos2d-x游戏引擎的API,这份文档适用于2015年的最新版本。cocos2d-x是一个基于MIT许可证的开源游戏引擎,它以快速、简单且功能强大的特性闻名,允许开发者...

    cocos2d-x_v3.16安装及环境变量配置文档

    cocos2d-x 是一个开源的游戏开发框架,使用 C++ 语言编写,支持多平台发布,包括 iOS、Android、Windows、macOS、Linux 和 Web。cocos2d-x v3.16 是该框架的一个版本号,本文档主要介绍了该版本的安装流程以及环境...

    cocos2d-x游戏源码 三国策略游戏源码

    cocos2d-x是一个开源的游戏开发框架,它基于cocos2d-x,用于创建2D游戏、演示程序和其他图形/交互式应用程序。cocos2d-x是用C++编写的,但同时也支持Lua和JavaScript作为脚本语言,使得开发者可以根据自己的喜好选择...

    cocos2d-x-cocos2d-x-2.2.2.zip

    《cocos2d-x 2.2.2:构建跨平台游戏开发的基石》 cocos2d-x 是一个开源的游戏开发框架,以其强大的功能和跨平台性深受开发者喜爱。这个压缩包“cocos2d-x-cocos2d-x-2.2.2.zip”包含了cocos2d-x 的2.2.2版本,该...

    精通COCOS2D-X游戏开发 基础卷_2016.4-P399-13961841.pdf

    精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发

    Cocos2d-x-3.x游戏开发之旅

    Cocos2d-x-3.x游戏开发之旅-钟迪龙著 全新pdf版和附书代码(代码为工程文件,可复制) 附带目录标签

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    《Cocos2d-x实战 JS卷 Cocos2d-JS开发》是一本深入探讨Cocos2d-x游戏引擎JavaScript版本使用的专业书籍。Cocos2d-x是全球范围内广泛采用的游戏开发框架,尤其适用于2D游戏的制作,而Cocos2d-JS则是其JavaScript接口...

    Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整

    1. Cocos2d-x:是一个开源的游戏开发框架,它主要用于开发跨平台的游戏和应用程序,支持iOS、Android、Windows、Mac等多个平台。它允许开发者使用一套代码,就可以在不同的操作系统上部署应用程序。 2. 实战++JS卷...

    cocos2d-x-3.13.1 spine3.6.zip

    Cocos2d-x是一个广泛使用的开源游戏开发框架,它基于C++,同时支持Lua和JavaScript等多种脚本语言,为开发者提供了高效、跨平台的游戏开发解决方案。在3.13.1版本中,Cocos2d-x对Spine动画引擎的集成进行了更新,这...

    cocos2d-x 动画工具 Flash2Cocos2d-x 1.3

    《cocos2d-x 动画工具 Flash2Cocos2d-x 1.3:将Flash创意带入移动游戏开发》 在移动游戏开发领域,cocos2d-x是一款广泛使用的开源游戏引擎,以其高效、跨平台的特性深受开发者喜爱。而Flash2Cocos2d-x则是一个专为...

    cocos2d-x windows vs2010配置

    Cocos2d-x 是一个跨平台的游戏引擎,可以在多种平台上运行,包括 Windows、Mac OS X、iOS、Android 等。 一、下载和安装 Cocos2d-x 首先,需要下载最新版本的 Cocos2d-x。打开浏览器,输入 cocos2d-x.org,然后...

    cocos2d-x-3.1.zip

    Cocos2d-x是一个开源的游戏开发框架,广泛用于2D游戏、实时渲染应用程序和其他互动内容的制作。这个压缩包“cocos2d-x-3.1.zip”包含了Cocos2d-x框架的3.1版本,这是一个经典且相对旧的版本,可能对于那些寻找历史...

    Cocos2d-x 3.x游戏开发之旅教程及完整源码下载

    Cocos2d-x 3.x游戏开发之旅教程及完整源码下载,使用最新cocos2d-x-3.14版本,在xcode7.3上已编译通过。 解决相关问题 1、解决源程序在高版本上无法编译问题 2、解决源程序中文注释部分,xcode上显示乱码问题 使用...

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这个“cocos2d-x-3.8.zip”压缩包包含的是cocos...

    cocos2d-x 3.x游戏开发实战光盘

    《cocos2d-x 3.x游戏开发实战光盘》是一个深入探讨cocos2d-x 3.x游戏引擎开发的资源集合,旨在帮助开发者通过实际案例掌握这一强大的2D游戏开发工具。cocos2d-x是一款开源的游戏开发框架,基于C++,广泛应用于跨平台...

Global site tag (gtag.js) - Google Analytics