cocoscreatorボタン長押し機能実現
8786 ワード
背景
製品にはゲームの開始ボタンが必要です.クリック:ゲームの開始;長押し:管理フィールドパネルを表示します.エンジン:cocoscretor v 2.1.2言語:JavaScript
インプリメンテーション cc.Class({
extends: cc.Component,
properties: {
btnStart: cc.Button, //
},
// LIFE-CYCLE CALLBACKS:
onLoad () {
//
this.touchFlag = false;
this.touchStartTime = null;
//
this.btnStart.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this);
this.btnStart.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this);
},
// start () {},
// onEnable() {},
//
touchStart(){
//
this.touchFlag = true;
//
this.touchStartTime = new Date();
},
//
touchHold(){
if(this.touchFlag && this.touchStartTime != null){
//
let touchHoldTime = new Date();
let milliseconds = touchHoldTime.getTime() - this.touchStartTime.getTime();
if(milliseconds > 300){
this.touchFlag = false;
//
//todo...
}
}
},
//
touchEnd(){
this.touchFlag = false;
this.touchStartTime = null;
//
//todo...
},
update (dt) {
//
if(this.touchFlag){
this.touchHold();
}
},
});
備考:cocoscreetorが残したボタンはイベント中のccを傍受するためである.Node.EventType.MOUSE_MOVEは、タッチポイントの画素移動が発生していない場合、このイベントリスニング関数はトリガーされません.そこで,本稿ではtouchFlag変数とupdate関数を組み合わせてビジネス上のニーズを実現した.これで終わりです.
cc.Class({
extends: cc.Component,
properties: {
btnStart: cc.Button, //
},
// LIFE-CYCLE CALLBACKS:
onLoad () {
//
this.touchFlag = false;
this.touchStartTime = null;
//
this.btnStart.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this);
this.btnStart.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this);
},
// start () {},
// onEnable() {},
//
touchStart(){
//
this.touchFlag = true;
//
this.touchStartTime = new Date();
},
//
touchHold(){
if(this.touchFlag && this.touchStartTime != null){
//
let touchHoldTime = new Date();
let milliseconds = touchHoldTime.getTime() - this.touchStartTime.getTime();
if(milliseconds > 300){
this.touchFlag = false;
//
//todo...
}
}
},
//
touchEnd(){
this.touchFlag = false;
this.touchStartTime = null;
//
//todo...
},
update (dt) {
//
if(this.touchFlag){
this.touchHold();
}
},
});
備考:cocoscreetorが残したボタンはイベント中のccを傍受するためである.Node.EventType.MOUSE_MOVEは、タッチポイントの画素移動が発生していない場合、このイベントリスニング関数はトリガーされません.そこで,本稿ではtouchFlag変数とupdate関数を組み合わせてビジネス上のニーズを実現した.これで終わりです.