skip to Main Content

I just made simple Cocos2d-x project.
It has serveral scenes and everyone has it’s own JavaScript.

dashboard.js

const MyClass = cc.Class.extend({

    ...

    update: function() {
        this.remainTimes --;
    },

    // Call the schedule method in your class constructor or init method
    ctor: function() {
        // Schedule the update function to be called every frame
        this.schedule(this.update().bind(this), 1);
        label.setFontFillColor(this.remainTimes);
        cc.log('remainTimes : ', this.remainTimes);
    };
});

here is console logs:

remainTimes : 10
remainTimes : 9
remainTimes : 8
remainTimes : 7
...

But Label’s text is like 10 after 1s 8 and after 1s 6
I am looking for if this dashboard.js is called twice in dashboard.scene but nothing!

Sometimes it works corretly but sometimes it works wrong….
Why?

I solve this problom and want to show correct remain time.

2

Answers


  1. Chosen as BEST ANSWER

    That error occurs because over-loading script. I mean dashboard.js linked to the dashboard scene. so this script is loaded one time when dashboard scene loaded and script doesn't destoryed even dashboard scene exited until refresh the browser.

    So function schedule is running in RAM storage. To solve this error, I link all script with the first scene, not self scene.


  2. I think that error occurs because that script is called several times.
    You mentioned that you link this script links into Dashboard scene.
    Don’t you call this schedule function several times in scene?
    please use unschedule() function in your code.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search