如何正确的利用for循环执行action?

需求:
有一个 var labels=[] 这个数组里面是一堆 cc.LabelTTF()
然后我希望里面的每个LabelTTF能够做一套相同的action:先移动一段距离,再各自从romove掉

我的想法:

for(var i=0;i<labels.length;i++){
 var label=labels[i];
 label.setName(i);
 label.runAction(cc.sequence(cc.moveBy(0.5,x,y),cc.callFunc(function(){
       cc.log(label.getName());     //--------------------------->  A
       label.removeFromParent(); //--------------------------->  B
 },this,label)));
}

但是实际效果是,A处getName显示的值是同一个数字,而removeFromParent也会报错,似乎是每次runAction的时取到的label都是同一个。
如何才能正确的在for里面执行这些动作然后各自remove掉它们自己呢?

好吧,我自己把data参数用错了= =
cc.callFunc的写法应该是

cc.callFunc(function(target,data){
    cc.log(data.getName());
    data.removeFromParent();
},this,label)