| Index: sky/examples/game/lib/sprite_box.dart
|
| diff --git a/sky/examples/game/lib/sprite_box.dart b/sky/examples/game/lib/sprite_box.dart
|
| index 9125b44f4fb10684ce20e444a15d9149f594a978..131c4d01fad6b7ff92580b5b55e6044827f5b5f5 100644
|
| --- a/sky/examples/game/lib/sprite_box.dart
|
| +++ b/sky/examples/game/lib/sprite_box.dart
|
| @@ -74,11 +74,27 @@ class SpriteBox extends RenderBox {
|
| // Event handling
|
|
|
| void _addEventTargets(Node node, List<Node> eventTargets) {
|
| + List children = node.children;
|
| + int i = 0;
|
| +
|
| + // Add childrens that are behind this node
|
| + while (i < children.length) {
|
| + Node child = children[i];
|
| + if (child.zPosition >= 0.0) break;
|
| + _addEventTargets(child, eventTargets);
|
| + i++;
|
| + }
|
| +
|
| + // Add this node
|
| if (node.userInteractionEnabled) {
|
| eventTargets.add(node);
|
| }
|
| - for (Node child in node.children) {
|
| +
|
| + // Add children in front of this node
|
| + while (i < children.length) {
|
| + Node child = children[i];
|
| _addEventTargets(child, eventTargets);
|
| + i++;
|
| }
|
| }
|
|
|
| @@ -101,7 +117,7 @@ class SpriteBox extends RenderBox {
|
| if (node.handleMultiplePointers || node._handlingPointer == null) {
|
| // Do the hit test
|
| Point posInNodeSpace = node.convertPointToNodeSpace(entry.localPosition);
|
| - if (node.hitTest(posInNodeSpace)) {
|
| + if (node.isPointInside(posInNodeSpace)) {
|
| nodeTargets.add(node);
|
| node._handlingPointer = event.pointer;
|
| }
|
| @@ -221,7 +237,7 @@ class SpriteBox extends RenderBox {
|
| canvas.concat(transformMatrix.storage);
|
|
|
| // Draw the sprite tree
|
| - _rootNode.visit(canvas);
|
| + _rootNode._visit(canvas);
|
|
|
| canvas.restore();
|
| }
|
| @@ -289,7 +305,7 @@ class SpriteBox extends RenderBox {
|
| }
|
| // Do the hit test
|
| Point posInNodeSpace = node.convertPointToNodeSpace(position);
|
| - if (node.hitTest(posInNodeSpace)) {
|
| + if (node.isPointInside(posInNodeSpace)) {
|
| list.add(node);
|
| }
|
| }
|
|
|