求组, 组件添加计时器的问题

实例化一个预制体,

cc.loader.loadRes("./Prefab/Player", function (err, prefab) {
            var newNode = cc.instantiate(prefab);
	    var PComponent = newNode.getComponent("Player");
	    PComponent.init();
	    this._player.addChild(newNode);
        }.bind(this));

在Player组件的init()函数中设置定时器

init: function(idx){
            this.schedule(function(dt){
		    cc.log(this.toString() + "Now Player ID:" + this.playerData.getPlayerID());
	    }.bind(this), 0.125)
},

期望是每实例化一个预制体,都能创建一个定时器, 现在的情况 貌似,定时器被覆盖, 只有最后一个, 也就是这里的日志, 只会输出最一个创建的 playerID. @panda

  1. 什么环境下遇到这个问题,log 是什么?期待的 log 是什么?
  2. 没有看到你实例化多个 prefab 的方式
  3. 没有看到 playerData 的类型、实现和它的 getPlayerID 方法
  4. schedule 的函数就是以自身对象来运行回调函数的,不需要 bind(this)

pc Chrome环境.

逻辑逻辑如下:

Player.js是附加在./Prefab/Player上的组件脚本.

日志如下:

仍然没有看到关键的代码,多次调用 addPlayer 的代码在哪里?如何传递不同的 id 进去的???

我的问题 2,3 都没有解答,拜托把问题解释清楚

还有 PC Chrome 的调试工具很方便,你大可以用断点的方式调试关键步骤看看错误出在哪里,比如:

  • 每次 addPlayer 传入的 id 有没有问题
  • loadRes 回调的时候 idx 有没有被篡改
  • getPlayer 返回的 playerData 本身有没有问题
    。。。

另外,你只需要 loadRes 一次就可以了,完全没必要每次 addPlayer 都去 loadRes

逻辑写错了.
PComponent.init();
下面加这个就好了.
PComponent.schedule(function(){cc.log(idx + “!!!”);}, 0.25);