多个物体使用相同事件的问题

请教个问题。。。我创建了一批sprite,但是事件回调里面获取到底target始终是最后一个sprite。。。。
for (var i = 5; i >= 1; i–) {
var sprite=new cc.Sprite();
sprite.id=i;//从5到1
cc.eventManager.addListener(listener.clone(), sprite);
}

    var listener = cc.EventListener.create({
            event: cc.EventListener.TOUCH_ONE_BY_ONE,
            swallowTouches: true,                  
            onTouchBegan: function (touch, event) {
                return true; //如果改成false,会没有任何输出
            },
            onTouchEnded: function (touch, event) {      
                var target = event.getCurrentTarget();
                cc.log(target.id);//始终是1
            }
    });

sprite 都在一个位置,被覆盖了

js异步的问题。当触发事件的时候,i这个局部变量已经被重写成1了,所以都是最后一个,传入匿名函数,再把它变成下一个空间的局部变量就行了。

for (var i = 5; i >= 1; i–) {
(function(i){
var sprite=new cc.Sprite();
sprite.id=i;//从5到1
cc.eventManager.addListener(listener.clone(), sprite);
})(i);
}