Famous / engine

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[BUG?] removeComponent does not stop onUpdate.

elinfante opened this issue · comments

I have an onUpdate Component attached to the NODE but when I remove the component keeps firing onUpdate.

Have you experiences something similar?

This is the code:

function _renderDigitCount () {

    this.BZ_onUpdate_COMP = this.addComponent({
        onUpdate: function(time) {
            _onRenderDigitCount.call(this)
        }.bind(this)
    });
    this.requestUpdate(this.BZ_onUpdate_COMP);


    this.BZ_copyCountTransitionable = new FA_TRANSITIONABLE(Number(this.BZ_font_MO.BZ_COPY_animation.startVal));
    this.BZ_copyCountTransitionable.delay(BZ_DisplayGlobals_SRV.timeRatio(this.BZ_font_MO.BZ_COPY_animation.delay));
    this.BZ_copyCountTransitionable.set(Number(this.BZ_font_MO.BZ_COPY_animation.endVal), {duration:BZ_DisplayGlobals_SRV.timeRatio(this.BZ_font_MO.BZ_COPY_animation.time), curve: "outQuint" }, _onRenderDigitCountCompleted.call(this));

}



function _onRenderDigitCount () {

    if (this.BZ_copyCountTransitionable === undefined) {
        _onRenderDigitCountCompleted.call(this);
    } else {
        var val = _numberFormat.call(this, this.BZ_copyCountTransitionable.get() );
        this.BZNO_FA_EL_DOM.setContent(val);
        this.requestUpdateOnNextTick(this.BZ_onUpdate_COMP);
    }

}



function _onRenderDigitCountCompleted () {

    this.removeComponent(this.BZ_onUpdate_COMP);

}

After few more tests I came up with the idea of setting the component to null. That seemed to do the trick.

function _onRenderDigitCountCompleted () {

    this.BZ_bzCopy_delay.clear();
    this.removeComponent(this.BZ_onUpdate_COMP);
    this.BZ_onUpdate_COMP = null;

}

@elinfante Can you please re-open this? This is for sure a bug and should be addressed without requiring workarounds.