smallnewer / bugs

18 stars 4 forks source link

PIXI事件小结 #70

Open smallnewer opened 9 years ago

smallnewer commented 9 years ago

PIXI的事件更贴合web开发者的使用习惯。但同时也有一些潜规则在里面。

触发流程

当一个触摸事件发生时,PIXI究竟是如何判断应该分派给哪个元素?其过程大概如下:

  1. 倒着遍历根元素的子元素
  2. 判断子元素的后代是否符合派发事件的条件(位置、层叠)
  3. 判断子元素是否是交互型元素(即obj.interactive = true)
  4. 判断子元素是否被手指(鼠标)碰撞

    4.1 通过hitArea判断碰撞 4.2 通过containPoint方法判断碰撞 4.3 子元素的后代是否和手指发生碰撞

了解这个流程更容易调试事件失效的问题。相反,DOM的事件机制要成熟的多,不需要二次开发,更是基本没有BUG。

潜在BUG

虽然大概流程如上,但有些具体的东西还需要说明一下。

首先,containPoint方法只有Graphcis和Sprite的实例才有。也就是说,Container系列是没有的。Container是通过其后代元素是否碰撞的逻辑来决定自己是否和触摸点碰撞。

未完待补充