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

效果如下:

点击右上角游戏暂停;

返回回到开始界面;

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

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

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

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

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

MainLayer.prototype.onPauseClicked = function () {   //点击暂停游戏     this.pausedLayer = cc.BuilderReader.loadAsNodeFrom("", "PauseLayer", this);     this.pausedLayer.setPosition(cc.p(0, 0));     this.pausedLayer.setZOrder(200);     this.rootNode.addChild(this.pausedLayer);     this.paused = true;     cc.AudioEngine.getInstance().stopMusic();     cc.Director.getInstance().pause(); }

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

MainLayer.prototype.onRenewClicked = function () {  //返回到开始界面     cc.Director.getInstance().resume();     cc.log("onRenewClicked");     cc.BuilderReader.runScene("", "StartLayer"); }  MainLayer.prototype.onReplayClicked = function () {  //新游戏     cc.Director.getInstance().resume();     cc.log("onReplayClicked");     cc.BuilderReader.runScene("", "MainLayer"); }

MainLayer,js全部代码;

// // CleanerScoreScene class //  var MainLayer = function () {     cc.log("MainLayer")     this.scoreLabel = this.scoreLabel || {};     this.monster = this.monster || {};     this.score = 123; };  MainLayer.prototype.onDidLoadFromCCB = function () {     if (sys.platform == 'browser') {         this.onEnter();     }     else {         this.rootNode.onEnter = function () {             this.controller.onEnter();         };     }      this.rootNode.schedule(function (dt) {         this.controller.onUpdate(dt);     });      this.rootNode.onExit = function () {         this.controller.onExit();     };      this.rootNode.onTouchesBegan = function (touches, event) {         this.controller.onTouchesBegan(touches, event);         return true;     };      this.rootNode.onTouchesMoved = function (touches, event) {         this.controller.onTouchesMoved(touches, event);         return true;     };     this.rootNode.onTouchesEnded = function (touches, event) {         this.controller.onTouchesEnded(touches, event);         return true;     };     this.rootNode.setTouchEnabled(true); };  MainLayer.prototype.onEnter = function () {     var flowerParticle = cc.ParticleSystem.create("Resources/particles/flower.plist");     flowerParticle.setAnchorPoint(cc.p(0.5, 0.5));     flowerParticle.setPosition(cc.p(60, 160));     flowerParticle.setPositionType(1);     this.monster.addChild(flowerParticle);      cc.AudioEngine.getInstance().playMusic("Resources/sounds/bg_music.mp3", true); }  MainLayer.prototype.monsterMove = function (x, y) {     this.monster.stopAllActions();     cc.AnimationCache.getInstance().addAnimations("Resources/snow_frame.plist");//添加帧动画文件     var action0 = cc.Sequence.create(cc.MoveTo.create(5, cc.p(x, y)));  //向前移动     var actionFrame = cc.Animate.create(cc.AnimationCache.getInstance().getAnimation("monster"));   //获取帧动画     var action1 = cc.Repeat.create(actionFrame, 90000);     var action2 = cc.Spawn.create(action0, action1); //同步动画     this.monster.runAction(action2); }  MainLayer.prototype.createParticle = function (name, x, y) {     var particle = cc.ParticleSystem.create("Resources/particles/" + name + ".plist");     particle.setAnchorPoint(cc.p(0.5, 0.5));     particle.setPosition(cc.p(x, y));     particle.setPositionType(1);     particle.setDuration(3);     this.rootNode.addChild(particle); }   MainLayer.prototype.onUpdate = function (dt) {     this.score += dt;     this.scoreLabel.setString(Math.floor(this.score)); }  MainLayer.prototype.onExitClicked = function () {     cc.log("onExitClicked"); }   MainLayer.prototype.onExit = function () {     cc.log("onExit"); }  MainLayer.prototype.onRenewClicked = function () {  //返回到开始界面     cc.Director.getInstance().resume();     cc.log("onRenewClicked");     cc.BuilderReader.runScene("", "StartLayer"); }  MainLayer.prototype.onReplayClicked = function () {  //新游戏     cc.Director.getInstance().resume();     cc.log("onReplayClicked");     cc.BuilderReader.runScene("", "MainLayer"); }  /*MainLayer.prototype.onReturnClicked = function () {  //返回游戏  cc.log("onReturnClicked");  if (this.paused) {  if (this.pausedLayer) {  this.pausedLayer.removeFromParent();  this.pausedLayer = null;  }  cc.Director.getInstance().resume();  this.paused = false;  }  }*/  MainLayer.prototype.onPauseClicked = function () {   //点击暂停游戏     this.pausedLayer = cc.BuilderReader.loadAsNodeFrom("", "PauseLayer", this);     this.pausedLayer.setPosition(cc.p(0, 0));     this.pausedLayer.setZOrder(200);     this.rootNode.addChild(this.pausedLayer);     this.paused = true;     cc.AudioEngine.getInstance().stopMusic();     cc.Director.getInstance().pause(); }  MainLayer.prototype.onTouchesBegan = function (touches, event) {     var loc = touches[0].getLocation(); }  MainLayer.prototype.onTouchesMoved = function (touches, event) {     cc.log("onTouchesMoved"); }  MainLayer.prototype.onTouchesEnded = function (touches, event) {     cc.log("onTouchesEnded");     var loc = touches[0].getLocation();     cc.AudioEngine.getInstance().playEffect("Resources/sounds/bomb.mp3", false);     this.monsterMove(loc.x, loc.y);     this.createParticle("around", loc.x, loc.y); }   

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

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

资料来源:cocos2d-x  editor

转载于:https://blog.51cto.com/makeapp628/1361258

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

  1. 手游开发神器 cocos2d-x editor 教程聚合和代码下载(持续更新中)

    --------------游戏基础教程篇-------------已完成--------- 一 cocos2d-x editor工具下载和基础教程JS篇: 一 手游开发神器 cocos2d-x ed ...

  2. 十 手游开发神器 cocos2d-x editor 之触摸事件

    这一节 我将实现让小怪物跟随我的触摸方向移动,同时触摸的地方产生一个四周发散的效果 效果如下: 代码下载:http://www.kuaipan.cn/file/id_25348935635744782 ...

  3. 一 手游开发工具cocos2d-x editor初识

    可学习的demo: 7个实战项目 flappybird(飞扬小鸟).popstar(消灭星星).fruitninja(水果忍者).2048(数度消除). moonwarriors(月亮战神).frui ...

  4. 视频教程-H5入门-系列手机游戏开发-过河-手游开发

    H5入门-系列手机游戏开发-过河 20年软件项目开发管理经验 工信部人才交流中心特聘专家讲师 日本U-CAN在线教育特聘主任讲师 国家十二·五规划软件工程教材作者(书:清华大学出版社出版) 中国软件行 ...

  5. Unity手游开发札记——移动平台的天气系统实现

    0. 牢骚 我发现,每个月的20+号是我有精力写博客的时间-- 这次项目算是经历的第一次严格意义上的渠道测试,更换了正式名称,见了更多玩家,开发组也经历的更多通宵--评价和数据如何暂时还未揭晓,趁着没 ...

  6. 手游立项(一):理解手游开发

    自己之前一直心心念想要做一款手游,但是连目前最起码的手游开发流程都不清楚,独立开发手游无异于痴人说梦.那么,撇开版本号备案充值之类的,做出一款单纯能玩的手游需要些什么呢? 游戏开发是一个项目. 用PM ...

  7. 一、Cocos2d-x/Qt,2D手游开发方案

    一.基础 Cocos2d-x v3.0:http://www.cocos2d-x.org/download/version#Cocos2d-x Qt v5.2:http://qt-project.or ...

  8. Cocos2d-Lua手游开发基础篇-何韬-专题视频课程

    Cocos2d-Lua手游开发基础篇-62875人已学习 课程介绍         Cocos2d-Lua是一个开源的移动游戏框架,可以轻松运行在iOS.Android.Blackberry等操作系统 ...

  9. Cocos2d-x 手游开发群:296733909

    2019独角兽企业重金招聘Python工程师标准>>> #Cocos2d-x 手游开发群:296733909 转载于:https://my.oschina.net/skyhacker ...

最新文章

  1. alternate端口什么意思_宽带光信号闪红灯是什么意思?
  2. 云南初中生计算机相关赛事,第14届中国大学生计算机设计大赛云南赛区决赛举行...
  3. vue从入门到精通之进阶篇(三)axios
  4. PushMe(交互式)
  5. 驱动多个二相四线制步进电机的Proteus仿真
  6. ghost还原提示an internal
  7. 联想笔记本键盘亮屏幕不亮_联想笔记本电脑开机键亮但是黑屏?键盘没反应?
  8. Java基础案例教程_Java基础案例教程答案
  9. Robotics Toolbox :(1)建立机器人模型
  10. 【周五松土】私家萝卜与坑
  11. 微信开发遇到的那些坑
  12. P4234-最小差值生成树【LCT】
  13. 【R语言】高维数据可视化| ggplot2中会“分身术”的facet_wrap()与facet_grid()姐妹花
  14. loj 3090 「BJOI2019」勘破神机 - 数学
  15. flutter 相机加入mask(遮罩层)
  16. 1.2 SpringBoot构建Docker镜像并推送到Harbor
  17. C# 中的委托和事件[转自http://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html]
  18. 分享145个ASP源码,总有一款适合您
  19. matlab土方计算,土方量计算的MATLAB工具箱研制
  20. UE4 蓝图常用节点汇总及意译(一)

热门文章

  1. 重装系统后ORACLE数据库恢复
  2. Downloading the Source
  3. Bitdefender Internet Security 2013 – 免费3个月
  4. POJ 1305 Fermat vs. Pythagoras【勾股数】
  5. Kubernetes — 设计理念
  6. hiredis — Redis 的 C 语言客户端
  7. Python Module_Socket_网络编程
  8. Makefile文件应用——huge项目
  9. 线性表元素的区间删除
  10. 仿抖音底部导航效果(一)