我循环创建的精灵,给每个精灵注册相同的触摸监听!每个精灵之间都相互重叠!点击重叠部分时几个精灵都同时响应了,我只想响应点击的那一个,请问各位大神怎么弄啊???在触摸监听加入setSwallowTouches(true);函数,只有最后一个精灵响应!
没人吗???帮帮忙啊大神们??说白了就是扑克游戏出牌时选择牌面!这个触摸监听怎么做????
大神们啊来帮帮忙啊!!!!
触摸的时候设置精灵的zOrder
怎么怎么设置??我是初学者,嫩给我上点代码吗????
判断一下点击的位置在不在精灵自身范围内
我是几个精灵重叠在一起的!!点击重叠位子,如果判断,那都在几个精灵范围内!!
选一个zIndex最大的
怎么选择??能给我上点代码吗??谢谢,初学还有些不懂!!!
来个大神给我说说吧!!!怎么做啊?我用for循环创建了几个精灵,在循环的同时给每一个精灵都添加了触摸监听,几个精灵是相互重叠的,点击重叠位置时,都响应了,添加触摸吞噬函数后就只有最上层响应,怎么弄啊??
可以参考cpp-tests里面的NewEventDispatherTest这个测试例。
你要的是什么效果啊?如果用的是addEventListenerWithSceneGraphPriority,那么就会根据层级关系相应,把setSwallowTouches设置为true,调整localzorder,想让哪个先响应就把哪个放最上面呢~
个人建议:
首先,总体思想上,牌不要用sprite,改用imageView(原因:sprite的触摸监听写起来很蛋疼,ccui有自己的监听);
其次,具体来说,自己写一个继承自imageView的类(比如叫cardImageView),并且在这个类的构造器里面实现初始化(比如传入牌的类型,图片路径什么的)和监听(也就是new对象的时候直接让它自己监听自己)。至于监听的逻辑该如何写,你可以根据传入的牌的类型来写一个大大的switch case,或者直接传入一个回调都可以,看你自己喜好
就是扑克牌游戏!扑克牌面,我用循环创建的!所有牌面都是相互重叠在一起的,点击每张牌都只有点击的那张响应,
怎么弄啊??能给我上点代码吗????
我咋感觉更麻烦呢????您还有其他方法没?给我说说呗!!!
后来我又先循环的创建精灵,为每个精灵添加标记!然后写个函数,通过标记获取每个精灵,为每个精灵单独的注册触摸监听,第一个直接用创建好的触摸监听注册,后面的就直接复制(clone())触摸监听,但效果还是一样,这是怎么回事大神们给我说说呗!!!!
var CardImageView=ccui.ImageView.extend({ type:null, ctor:function(type,res){ this._super(res); this.type=type; this.addClickEventListener(this.handle); }, handle:function(){ switch(this.type){ case 1: //TODO: break; case 2: //TODO break; } } })
-------------------------------------------
var types=[1,2,3]; var res=["1.png","2.png","3.png"]; var listView=new ccui.ListView();
for(var i=0;i<3;i++){ var card=new CardImageView(types[i],res[i]); listView.pushBackCustomItem(card); }
我是用js的,所以就表示个大概意思
这样还嫌麻烦我也没什么可说的了……我就是嫌sprite的触摸判断麻烦才建议你用imageView的
谢谢了!!!!