十二 手游开发神器 cocos2d-x editor 之游戏暂停悬浮层
进入游戏主场景,游戏需要临时暂停、重新选关、重新玩等等,所以玩家点击暂停按钮,弹出一个选择悬浮层,这一节我们来实现;
效果如下:
点击右上角游戏暂停;
返回回到开始界面;
代码下载: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 之游戏暂停悬浮层相关推荐
- 手游开发神器 cocos2d-x editor 教程聚合和代码下载(持续更新中)
--------------游戏基础教程篇-------------已完成--------- 一 cocos2d-x editor工具下载和基础教程JS篇: 一 手游开发神器 cocos2d-x ed ...
- 十 手游开发神器 cocos2d-x editor 之触摸事件
这一节 我将实现让小怪物跟随我的触摸方向移动,同时触摸的地方产生一个四周发散的效果 效果如下: 代码下载:http://www.kuaipan.cn/file/id_25348935635744782 ...
- 一 手游开发工具cocos2d-x editor初识
可学习的demo: 7个实战项目 flappybird(飞扬小鸟).popstar(消灭星星).fruitninja(水果忍者).2048(数度消除). moonwarriors(月亮战神).frui ...
- 视频教程-H5入门-系列手机游戏开发-过河-手游开发
H5入门-系列手机游戏开发-过河 20年软件项目开发管理经验 工信部人才交流中心特聘专家讲师 日本U-CAN在线教育特聘主任讲师 国家十二·五规划软件工程教材作者(书:清华大学出版社出版) 中国软件行 ...
- Unity手游开发札记——移动平台的天气系统实现
0. 牢骚 我发现,每个月的20+号是我有精力写博客的时间-- 这次项目算是经历的第一次严格意义上的渠道测试,更换了正式名称,见了更多玩家,开发组也经历的更多通宵--评价和数据如何暂时还未揭晓,趁着没 ...
- 手游立项(一):理解手游开发
自己之前一直心心念想要做一款手游,但是连目前最起码的手游开发流程都不清楚,独立开发手游无异于痴人说梦.那么,撇开版本号备案充值之类的,做出一款单纯能玩的手游需要些什么呢? 游戏开发是一个项目. 用PM ...
- 一、Cocos2d-x/Qt,2D手游开发方案
一.基础 Cocos2d-x v3.0:http://www.cocos2d-x.org/download/version#Cocos2d-x Qt v5.2:http://qt-project.or ...
- Cocos2d-Lua手游开发基础篇-何韬-专题视频课程
Cocos2d-Lua手游开发基础篇-62875人已学习 课程介绍 Cocos2d-Lua是一个开源的移动游戏框架,可以轻松运行在iOS.Android.Blackberry等操作系统 ...
- Cocos2d-x 手游开发群:296733909
2019独角兽企业重金招聘Python工程师标准>>> #Cocos2d-x 手游开发群:296733909 转载于:https://my.oschina.net/skyhacker ...
最新文章
- alternate端口什么意思_宽带光信号闪红灯是什么意思?
- 云南初中生计算机相关赛事,第14届中国大学生计算机设计大赛云南赛区决赛举行...
- vue从入门到精通之进阶篇(三)axios
- PushMe(交互式)
- 驱动多个二相四线制步进电机的Proteus仿真
- ghost还原提示an internal
- 联想笔记本键盘亮屏幕不亮_联想笔记本电脑开机键亮但是黑屏?键盘没反应?
- Java基础案例教程_Java基础案例教程答案
- Robotics Toolbox :(1)建立机器人模型
- 【周五松土】私家萝卜与坑
- 微信开发遇到的那些坑
- P4234-最小差值生成树【LCT】
- 【R语言】高维数据可视化| ggplot2中会“分身术”的facet_wrap()与facet_grid()姐妹花
- loj 3090 「BJOI2019」勘破神机 - 数学
- flutter 相机加入mask(遮罩层)
- 1.2 SpringBoot构建Docker镜像并推送到Harbor
- C# 中的委托和事件[转自http://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html]
- 分享145个ASP源码,总有一款适合您
- matlab土方计算,土方量计算的MATLAB工具箱研制
- UE4 蓝图常用节点汇总及意译(一)