十二 手游开发神器 cocos2d-x editor 之游戏暂停悬浮层
来源:未知 责任编辑:责任编辑 发表时间:2014-02-02 17:45 点击:次
进入游戏主场景,游戏需要临时暂停、重新选关、重新玩等等,所以玩家点击暂停按钮,弹出一个选择悬浮层,这一节我们来实现;
效果如下:
点击右上角游戏暂停;
返回回到开始界面;
首先创建一个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 3.2 大富翁游戏项目开发-第二十四部分 彩票开奖
- cocos2d-x开发: 场景实体(entity)管理
- Cocos2d-x虚拟摇杆控制精灵上下左右运动----之游戏开发《赵云要
- Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_2
- Cocos2d-x 自定义按钮类控制精灵攻击----之游戏开发《赵云要格斗
- Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_3
- Cocos2d-x 3.2 大富翁游戏项目开发-第八部分 角色按路径行走
- 结合cocos2d-x开发配置sublime text
- cocos2d-x开发: 如何从项目中分离出接口范例
- Cocos2d-x 3.2 大富翁游戏项目开发-第十部分实现人物轮流行走
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>
您可能感兴趣的文章
- Cocos2d-x学习(一):HelloWorld
- cocos2d-x CCRotateTo 对初始角,旋转角的处理
- cocos2dx Sprite setBlendFunc 使用颜色混合:加算,减算
- 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之
- cocos2d-x 3.0rc 较于2.2v 诸多变化中的一些小点
- Cocos2d-x 的“HelloLua” 深入分析
- ibatis 关联自己,怎么映射 xml ?
- cocos2d-x在win32和iOS、android下获取当前系统时间的方法
- 用cocos2d-html5做的消除类游戏《英雄爱消除》(1)——系统主菜单
- cocos2d-x ActionManager控制精灵的暂停运动