我们在stage上触摸的任一点都会有hit+ID的输出,即系统不经任何判断,只要stage捕捉到触摸事件,就会通知其内的所有Actor,调用所有子Actor的hit()方法
stage中的Actor队列的末尾的Actor最先响应,然后逐步是队列前部的Actor
事实上,传入的这个参数是触摸点相对于Actor的坐标。除了hit()方法,touchDragged(),touchMoved(),touchDown(),touchUp()这四个方法中传入的x,y参数也是触摸点相对于Actor的x,y值,而不是触摸点的绝对坐标。
touchDragged(),touchMoved(),touchDown(),touchUp()这四个方法呢?
我直接揭晓答案好了。事实上,这四个方法的触发需要hit()方法的配合,我们可以看到默认的hit()方法返回的是null,而当经过相应的判定之后,我们在hit()方法中返回这个Actor实例
if(arg0>0&&arg1>0&&arg0<tx.getWidth()&&arg1<tx.getHeight())
- return this;
- return null;
这里我们将这个Actor看作是一个和图片资源actor.png一样大的矩形。运行一下,看看效果,我触摸了其中一个ExampleActor,
实际上我是触摸了第二个ExampleActor,即example2,因此我们可以看见example2的touchDown的输出,而看不见第一个的,这就实现了一个简单的触摸检测