cocos creator-2.3.4-使用schedule回調(diào)函數(shù),實現(xiàn)一個倒計時功能

廢話不多說,先上代碼:

const {ccclass, property} = cc._decorator;

@ccclass
export default class Countdown extends cc.Component {

    @property(cc.Animation)
    animation: cc.Animation = null;

    @property(cc.Label)
    labelComponent: cc.Label = null;

    count: number = 0;
    callback: Function = null;

    // LIFE-CYCLE CALLBACKS:

    onLoad () {}

    start () {}

    showTime (time: number) {
        this.count = time;
        this.animation.play();

        this.callback = function () {
            if (this.count <= 0) {
                this.labelComponent.unschedule(this.callback);
                return;
            }
            this.count--;
            **this.labelComponent.string = this.count.toString();**  // 訪問組件需綁定響應(yīng)函數(shù)調(diào)用者為this
        }.bind(this)
        this.labelComponent.schedule(this.callback, 1);
        this.labelComponent.string = this.count.toString();

    }

    // update (dt) {}
}

問題出在這句:this.labelComponent.string = this.count.toString(); ,如果想在this.callback 中設(shè)置 this.labelComponent.string,正確的用法是 this.callback = funtion () {}.bind(this),否則會報這樣的錯誤:Uncaught TypeError: Cannot set property 'string' of undefined

creator官方文檔-計時器的使用
creator官方文檔-bind綁定響應(yīng)函數(shù)的調(diào)用者

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

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

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