unschedule在update中调用失效

同一个函数,在onload中调用,其中的unschedule有效;在update中调用,其中的unschedule无效。
不知道是不是bug。函数如下:
startAttack: function(){
this.callback = function(){
cc.log(“still scheduleing”);
if(cc.isValid(this.game.Hero) == false){ //目标被detroy则停止攻击(schedule还在)
this.unschedule(this.callback);
return;
};
var heroPos = this.game.Hero.getPosition();
var dist = cc.pDistance(this.node.position, heroPos);
if (dist > this.attDist){ //距离远了就停止攻击(schedule还在)
cc.log(“far stop attack”);
this.unschedule(this.callback);
return;
};
this.game.Hero.getComponent(‘Hero’).attacked(this.att);
cc.log(this.node.name + ’ attacks ’ + ‘Hero’ + ’ with harm: ’ + this.att);
};
if(this.attacking == false){ //若没有在攻击则开始攻击
this.attacking = true;
this.schedule(this.callback, this.attFreq);
cc.log(“start”);
};
},

怎么解决的啊