动态生成预制体并添加监听事件同时获取对应触发对象(已解决)

代码如下:
/**
* 实例化MoreGameItem
*/
public SpawnMoreGameItem(data: MoreGameData[]) {

    var self = this;

    //遍历生成预制体并赋值
    data.forEach(element => {//那个布局组件要研究一下
        //加载预制体
        // this.resSvc.LoadPrefabs(PathCfg.MOREGAMEITEM_PATH,this.spawnPos,makeObj);
        loader.loadRes(PathCfg.MOREGAMEITEM_PATH, (err, prefab) => {
            if (err) {
                console.log("error while read" + "," + err);
                return;
            }
            let curNode = instantiate(prefab);


            //设置父对象
            this.spawnPos.addChild(curNode);

            //添加进预制体集合
            //self.curDestoryMoreGameItem.push(curNode);

            //设置它的名字
            //curNode.name = "moreItem:" + element.id;
            //console.log("curNode.name:"+curNode.name);
            //获得组件
            /**
             * MoreGameItem组件
             */
            let moreGameComp: MoreGameItem = curNode.getComponent(MoreGameItem);
            console.log("获得组件:" + moreGameComp);
            //设置Id
            moreGameComp.Id = element.id;
            console.log("设置id:" + moreGameComp.Id);
            //加载图片并设置
            //this.resSvc.LoadImage(element.imgIconUrl, moreGameComp.imgIcon);
             loader.loadRes(element.imgIconUrl,(err:any,sp:SpriteFrame)=>{
                 if(err){
                     console.log("error while downing"+","+err);
                 }
                 moreGameComp.imgIcon.spriteFrame=sp;
             });
            //设置Des
            moreGameComp.txtDes.string = element.txtDes;
            //获取当前的Button组件
            //let buttonComp: ButtonComponent = curNode.getComponent(ButtonComponent);
            //动态添加监听
            //curNode.on(Node.EventType.MOUSE_DOWN, this.ClickMoreGameItem, curNode,curNode);
            //curNode.on(Node.EventType.MOUSE_DOWN, this.ClickMoreGameItem(curNode), this);
            curNode.on(Node.EventType.MOUSE_DOWN, this.ClickMoreGameItem, curNode);
            //curNode.on(Node.EventType.MOUSE_DOWN, this.ClickMoreGameItem, this);
            /*curNode.on(Node.EventType.MOUSE_DOWN, function (err, curNode) {
                //请求网络数据      
                //this.ReqMoreGameItem();
                console.log("点击了更多游戏:" + curNode.name);
            })*/
            //buttonComp.clickEvents();
        })

        console.log("实例化更多游戏预制体" + element.id);
    });

    console.log("实例化更多游戏预制体...")
}

/**
* 点击MoreGameItem
*/
public ClickMoreGameItem(event: EventMouse) {
//请求网络数据
MainMgr.Instance().moregamePanel.ReqMoreGameItem();//这样写才能访问到
console.log(“点击了更多游戏:” + (event.target as Node).name);
}