通过instantiate方法得到的item节点无法添加触摸事件。
我点击子节点并没有输出 信息
var Poke=cc.Class({
name:“Poke”,
properties:{
id:0,
suit:’’,
pokeSF: cc.SpriteFrame,}});
cc.Class({
extends: cc.Component,
properties: {
pokes:{
default:[],
type:Poke,
},
pokePrefab:cc.Prefab
}, // LIFE-CYCLE CALLBACKS:
onLoad ()
{
var cardNo=[];
var action=cc.moveTo(1,100,100); //创建动作
for (var i=0;i<54;i++)
{
cardNo[i]=i;
}
function ranSort(a,b)
{
return Math.random()>0.5?1:-1;
}
cardNo.sort(ranSort);
var date=[];//存放手牌的数据信息
for (var i=0;i<13;i++)
{
date[i] =this.pokes[cardNo[i]];
}
//让date里面的数据按照date.id降序
function decSort(a,b)
{
return b.id-a.id;
}
date.sort(decSort);
for (var i=0;i<13;i++){
let item=cc.instantiate(this.pokePrefab); //克隆pokePrefab
this.node.addChild(item);
//给节点添加触摸事件
item.on(cc.Node.EventType.TOUCH_START,function(){cc.log(“sdqer3”)},this)
就是这里,这个事件一直实现不了
item.getComponent(‘pokeTemplate’).init({id:date[i].id,iconSF:date[i].pokeSF})
}
},
start () {
}, // update (dt) {},
});
把触摸事件写在 pokeTemplate.js 中
onLoad() {
this.node.on('touchstart', () => {
console.log('执行');
}, this);
}
大哥,没反应
你是不是没有添加button组件???
有一位大佬给我写了个一样的demo,结果他的是可以实现的,我的就不行,而我俩的代码几乎是一样。都是在空节点里面动态创建节点,然后添加触摸事件
cc.Class({
extends: cc.Component,
properties: {
prefab: cc.Prefab,
parent: cc.Node,
count: 1,
autoLoad: true,
},
start () {
if (this.autoLoad) {
this.loadPrefab();
}
},
loadPrefab() {
for (let i = 0; i < this.count; i++) {
let node = cc.instantiate(this.prefab);
this.parent.addChild(node);
// eee.parent = this.parent;
//node.name = ${this.prefab.name}${i};
node.on(cc.Node.EventType.TOUCH_START, function() {
cc.log(‘item touch start:’)//, touchEvent.target.name);
// let temp = this.parent.getChildByName(touchEvent.target.name);
// cc.log(temp === touchEvent.target);
}, this);
}
}
});
我把这里面很多代码都注释了,还是可以实现这个功能
我问你this.pokePrefab这个预制体有没有添加到button组件?
你怎么点击这个刚生成出来的预制体的?
根据预制体动态生成的节点,我给他添加了图片,点击图片可以吧= =?
node size不能是0
方便弄个demo出来吗?
痛哭流涕= =老哥,你牛批,node size是0就点击不了了,解决了!!!
老哥,解决了,是size=0的问题
,谢谢诸位
老哥,解决了,感谢关注。是预制体size=0的问题



