前言:
这一篇我们主要介绍检测事件,包括常规的MenuItem和Button ,还有不常规的sprite和label触摸来模拟点击事件;
效果图
第一个是MenuItem 第二个是Button 第三个是Sprite 第四个是Label
代码下载
https://github.com/makeapp/cocoseditor-samples (snow-click)
代码分析
1 创建一个MenuItem,注意下面几个点;
2 创建一个Button,注意下面几个点
3 MenuItem和button直接在代码里面定义onPlayClicked和onButtonPlayClicked就可以了
var StartLayer = function () { cc.log("StartLayer") this.LoadingLayer = this.LoadingLayer || {}; this.passTime = 0; this.goStart = false; }; StartLayer.prototype.onDidLoadFromCCB = function () { // this.rootNode.onUpdate = function (dt) // { // this.controller.onUpdate(); // }; // this.rootNode.schedule(this.rootNode.onUpdate); if (sys.platform == 'browser') { this.onEnter(); } else { this.rootNode.onEnter = function () { this.controller.onEnter(); }; } this.rootNode.onExit = function () { this.controller.onExit(); }; this.rootNode.schedule(function (dt) { this.controller.onUpdate(dt); }); 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); }; StartLayer.prototype.onEnter = function () { this.LoadingLayer = cc.BuilderReader.loadAsNodeFrom("", "LoadingLayer", this); this.LoadingLayer.setPosition(cc.p(0, 0)); this.LoadingLayer.setZOrder(200); this.rootNode.addChild(this.LoadingLayer); // cc.Director.getInstance().pause(); /*this.LoadingLayer.scheduleOnce(this.removeLoading, 1);*/ this.goStart = true; this.startTime = this.passTime; this.playSprite = this.playSprite || {}; this.playLabel = this.playLabel || {}; }; StartLayer.prototype.removeLoading = function () { // if (this.LoadingLayer) { cc.log("removeLoading"); // cc.Director.getInstance().resume(); this.LoadingLayer.removeFromParent(); } StartLayer.prototype.onUpdate = function (dt) { this.passTime += dt; if (this.passTime - this.startTime > 1 && this.goStart) { this.removeLoading(); this.goStart = false; } } StartLayer.prototype.onPlayClicked = function () { // cc.BuilderReader.runScene("", "GameSelectLayer"); cc.Toast.create(this.rootNode, "我是MenuItem", 1); } StartLayer.prototype.onButtonPlayClicked = function () { // cc.BuilderReader.runScene("", "GameSelectLayer"); cc.Toast.create(this.rootNode, "我是Button", 1); } /*StartLayer.prototype.onClose = function () { cc.BuilderReader.runScene("", "GameSelectLayer"); }*/ StartLayer.prototype.onExit = function () { }; StartLayer.prototype.onTouchesBegan = function (touches, event) { this.pBegan = touches[0].getLocation(); //sprite button var that = this; if (cc.rectContainsPoint(this.playSprite.getBoundingBox(), this.pBegan)) { this.playSprite.runAction(cc.Sequence.create(cc.ScaleTo.create(0.1, 1.1), cc.CallFunc.create(function () { cc.Toast.create(that.rootNode, "我是sprite button", 1); }) )); } //label button var playLabelRect = cc.rect(this.playLabel.getPosition().x - 50, this.playLabel.getPosition().y - 50, 50 * 2, 50 * 2); if (cc.rectContainsPoint(playLabelRect, this.pBegan)) { this.playLabel.runAction(cc.Sequence.create(cc.ScaleTo.create(0.1, 1.1), cc.CallFunc.create(function () { cc.Toast.create(that.rootNode, "我是label button", 1); }) )); } } StartLayer.prototype.onTouchesMoved = function (touches, event) { cc.log("onTouchesMoved"); } StartLayer.prototype.onTouchesEnded = function (touches, event) { cc.log("onTouchesEnded"); }