求指教一个问题,关于动作回调函数的

for(var i =-;i<5;i++){
var mt=new cc.MoveTo(1,this.sunButton.getPosition());
var s=this;
var t=i;
var cf=new cc.CallFunc(function(){
s.menubuttonarr[t].visible=false;
});
var seq=new cc.sequence(mt,cf);
this.menubuttonarr[i].runAction(seq);
}

具体就是让每一个按钮执行一个序列动作,序列动作中有一个回调函数将按钮隐藏。但是运行后在回调函数内t值都为4,并非从0开始。这个问题如何解决?

可能是闭包引起的。将你对应的button加入callFunc参数列表里面。回调时直接操作就行了。不会了看APIDemo

for循环执行完,所有的t都为4了。这个是因为没用闭包引起的,如果你想执行成功,可以把i值赋值给对应button的一个属性,然后动作里面用这个属性来代替t值

for(var i =-;i<5;i++){
var mt=new cc.MoveTo(1,this.sunButton.getPosition());
var s=this;
var cf=new cc.CallFunc(function(i){
return function(){
s.menubuttonarr[i].visible=false;
}
}(i));
var seq=new cc.sequence(mt,cf);
this.menubuttonarr[i].runAction(seq);
}

最好是把回调抽出去 这样不用每次循环都创建

非常感谢!!