移动鼠标:
上面的例子里,我们通过layer的mousemove
事件的targetSprites参数来判断s1是否被触发,如果触发,通过evt.x、evt.y拿到鼠标相对于layer的坐标,然后再通过s1.pointToOffset
,可以得到鼠标相对于s1元素的相对坐标(以anchor point为坐标原点)。不过这样做有点麻烦,我们可以直接在s1上也注册事件,这样我们可以通过事件参数的offsetX、offsetY
直接拿到鼠标的相对位置。但是,我们需要解决一个问题——
我们可以同时在layer和s1上注册mousemove事件,以修改label的提示文字。但是,如果鼠标停留在s1上时,我们不能让layer的mousemove事件仍被触发,否则的话文字就会被覆盖。在sprite提供的事件参数中,stopDispatch()
方法正是用来阻止事件从当前的元素向下一个同级元素传播的。利用它就可以实现元素之间的遮挡。
比如我们可以利用改变元素的zIndex和stopDispatch来实现元素间的拖拽。
注意下面的例子中并不会阻止不同级的元素,因此阻止掉sprite元素的mousemove事件,并不会同时阻止掉它所在layer的mousemove事件。