lufy's legend

标题: 关于点击事件的穿透性 [打印本页]

作者: sallypanda    时间: 2014-6-11 12:47
标题: 关于点击事件的穿透性
你好大神,我在使用该款引擎的过程中,碰到以下问题:
主要是关于点击事件的穿透性
1,例如我把开始游戏界面隐藏了,然后载入游戏界面,但发现点击游戏界面的同时,还会触发到开始游戏的按钮事件。这里是否需要直接removeChild开始界面,而不是隐藏开始界面呢?
2,就是层的叠加,例如我叠加了两层LSprite,点击最顶的一层,还是会触发下一层的点击事件,想问关于事件的穿透性,需要如何解决,因为参考了其他引擎,都会有相关设置,恳请大神解答


作者: lufy    时间: 2014-6-11 18:31
两个问题我都要确认一下你的做法才能回答。
第一个,
你是如何隐藏游戏界面的?如果使用visible=false;的话,鼠标事件应该是不会被触发的,你是这样做的吗?
第二个,
在引擎里,关于鼠标事件,我提供了两种做法,就是是否使用鼠标容器。
在不使用鼠标容器的情况下,鼠标事件是可以实现遮挡的,应该不会存在你说的问题。
如果使用了鼠标容器,鼠标事件触发的时候,就不会再去考虑是不是被触发的对象是不是被遮挡住了,只要在它可触发的范围之内就会触发,所以相对来说,鼠标容器更高效一些,但是缺点就是无法实现遮挡,或者说遮挡部分需要自己去判断。
所以,关于如何去解决这个问题,你需要告诉我你是否使用了鼠标容器?
作者: sallypanda    时间: 2014-6-14 23:11
第一个:我先说明一下结构,开始界面是一个LSprite层,然后里面包含了两个子的LSprite,每个LSprite又各自包含一个bitmap来作为按钮的图片,然后我给这两个子LSprite绑定点击事件。
当我点击了按钮,便会开始游戏。我是直接把开始界面(也就是一个LSprite层),用visible=false隐藏了,界面是隐藏了,但在游戏界面中,只要点击之前开始界面的按钮的位置,就会触发按钮的事件
我现在的解决方法是给这个开始界面的最顶LSprite层也添加一个事件侦听,但不干任何事。
第二个:我没有使用鼠标容器。
作者: sallypanda    时间: 2014-6-14 23:13
还有,我想问一下,我发现bitmap是不能直接绑定事件的,必须用LSprite装起来,然后给LSprite添加事件。请问大神作者,我是否理解正确?
作者: yorhomwang    时间: 2014-6-15 10:48
sallypanda 发表于 2014-6-14 23:13
还有,我想问一下,我发现bitmap是不能直接绑定事件的,必须用LSprite装起来,然后给LSprite添加事件。请问 ...

如果是最新版本1.8.12,那应该不会有这些问题啊。
或者你可以把代码贴出来,方便大家帮忙检查
作者: lufy    时间: 2014-6-15 16:48
sallypanda 发表于 2014-6-14 23:11
第一个:我先说明一下结构,开始界面是一个LSprite层,然后里面包含了两个子的LSprite,每个LSprite又各自包 ...

http://lufylegend.com/demo/test/37.html
这个是将visible设置为false的例子

http://lufylegend.com/demo/test/38.html
这是鼠标事件被遮挡后点击无效的例子

你对照一下,看看哪里有问题吧
作者: lufy    时间: 2014-6-15 16:49
sallypanda 发表于 2014-6-14 23:13
还有,我想问一下,我发现bitmap是不能直接绑定事件的,必须用LSprite装起来,然后给LSprite添加事件。请问 ...

LBitmap是不支持鼠标事件,但是支持自定义事件
作者: sallypanda    时间: 2014-6-16 10:44
大神,你给我的demo,是没错,我也试过,如果结构是按照demo的结构,的确是可以。
但如果我的事件并不是直接绑定给最外层的LSprite,而是里面的一个子LSprite,就会出现我说的问题,请大神测试一下
作者: lufy    时间: 2014-6-16 13:31
sallypanda 发表于 2014-6-16 10:44
大神,你给我的demo,是没错,我也试过,如果结构是按照demo的结构,的确是可以。
但如果我的事件并不是直接 ...

首先要清楚一点就是
点击了子对象的话,就相当于点击了父对象,因为子对象是父对象的一部分
能说一下你具体是怎么做的吗?




欢迎光临 lufy's legend (http://lufylegend.com/forum/) Powered by Discuz! X2.5