新手请问cc.callFunc是怎么传递参数的

createGoldAnim:function (srcPos,goldCount,radius,dstPos) {
var coinarray = this.getPoint(radius,srcPos.x,srcPos.y,goldCount);
for (var i = 0; i < coinarray.length; i++) {
var gold = this.createGold(this.node);//从预制体对象池拿预制体
gold.setPosition(srcPos);

        var seq = cc.sequence(
            cc.moveTo(0.5,coinarray[i]),
            cc.moveTo(0.5,dstPos),
            cc.callFunc(function (aaa) {this.onGoldKilled(aaa);}.bind(this)),//将对象返回对象池
            //【问题】为什么是放aaa??它怎么知道aaa是gold的??

        )

        gold.runAction(seq);
    }

这个函数不要带参数,用闭包:

var aaa={}//自己定义它是什么
var seq = cc.sequence(
            cc.moveTo(0.5,coinarray[i]),
            cc.moveTo(0.5,dstPos),
            cc.callFunc(function () {this.onGoldKilled(aaa);}.bind(this)),//将对象返回对象池
        )
        gold.runAction(seq);
    }
/**
 * !#en Creates the action with the callback.
 * !#zh 执行回调函数。
 * @method callFunc
 * @param {function} selector
 * @param {object} [selectorTarget=null]
 * @param {*} [data=null] - data for function, it accepts all data types.
 * @return {ActionInstant}
 * @example
 * // example
 * // CallFunc without data
 * var finish = cc.callFunc(this.removeSprite, this);
 *
 * // CallFunc with data
 * var finish = cc.callFunc(this.removeFromParentAndCleanup, this._grossini,  true);
 */
cc.callFunc = function (selector, selectorTarget, data) {
    return new cc.CallFunc(selector, selectorTarget, data);
};

这是源码,正确的做法是

cc.callFun(function(data){
   this.xxx = data.name;
}, this, {name:'a',age:18})