按鈕長(zhǎng)按效果

Cocos Creator 確實(shí)可以快速開發(fā)不是很復(fù)雜的游戲,但是cocos creator還是有很多不足的地方,畢竟靠視圖編輯器。作者也是很快的入門了cocos creator的開發(fā)和學(xué)習(xí),學(xué)會(huì)了做簡(jiǎn)單的頁(yè)面。本文也是作者的粗略記錄,歡迎討論,不喜勿噴。

實(shí)現(xiàn)原理:通過(guò)cc.Node.EventType來(lái)監(jiān)聽按下和放開的動(dòng)作,過(guò)程通過(guò)update方法來(lái)監(jiān)聽。是的,就是這么簡(jiǎn)單。

具體步驟:
myButton是需要實(shí)現(xiàn)長(zhǎng)按效果的按鈕;

0.定義一個(gè)boolean值的flag:myButton_flag,如果此值為true表示按鈕被按著的狀態(tài),false表示沒(méi)被按著的狀態(tài)。

1.在生命周期方法的onLoad或onEnable中,給myButton綁定cc.Node.EventType.TOUCH_START 和TOUCH_END事件,如下:

this.myButton.node.on(cc.Node.EventType.TOUCH_START,this.touchStartFun,this);
this.myButton.node.on(cc.Node.EventType.TOUCH_END,this.touchEndFun,this);

其中touchStartFun和touchEndFun為自定義的方法:

touchStartFun:function(event){
        var targetNode = event.getCurrentTarget();
        if (targetNode == this.myButton.node) {
             this.myButton_flag = true;
        }
}
touchEndFun:function(event){
        var targetNode = event.getCurrentTarget();
        if (targetNode == this.myButton.node) {
             this.myButton_flag = false;
        }
}
//touchStartFun和touchEndFun分別改變myButton是否被按住的狀態(tài)。

2.update中實(shí)現(xiàn)被按住時(shí)執(zhí)行的方法:

update: function (dt) {
        if (this.myButton_flag) {
                this.longTouchAction();
        }
}
//longTouchAction為自定義方法,其中執(zhí)行自己的操作。

問(wèn)題:update方法是根據(jù)fps來(lái)更新的,假設(shè)fps是60幀/每秒(實(shí)際這個(gè)是不定的),也就是每秒要執(zhí)行60次這個(gè)方法;因此這是不切實(shí)際的,所以要控制執(zhí)行l(wèi)ongTouchAction方法的時(shí)機(jī)。

解決:通常長(zhǎng)按操作的需求也是重復(fù)執(zhí)行某個(gè)操作,例如持續(xù)加分。于是可以改為:

//定義一個(gè)longTouch_delta來(lái)計(jì)數(shù)時(shí)間float類型
update: function (dt) {
        if (this.myButton_flag) {
            this.longTouch_delta += dt;//dt為每幀切換的時(shí)間
            if (this.longTouch_delta>0.5) {//大于0.5秒就執(zhí)行一次longTouchAction方法
                  this.longTouchAction();
                  this.longTouch_delta = 0;//執(zhí)行一次后把時(shí)間計(jì)數(shù)清0
            }
        }
}

好了,說(shuō)起來(lái)挺簡(jiǎn)單的,但是要用文字描述清楚還是挺困難的,寫作能力需求提高,見諒。

如有不同的意見,歡迎留言指正。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容