starling响应鼠标和触摸事件,点击点的转换思路:
1、stage侦听所有鼠标和触摸事件;
2、将stageX、stageY转换到viewport的坐标系中;
globalX = _stage.stageWidth * (globalX - _viewPort.x) / _viewPort.width;
globalY = _stage.stageHeight * (globalY - _viewPort.y) / _viewPort.height;
3、每帧检测stage中的所有显示对象,
(1)获取子对象相对于其父级空间的变换矩阵,并求逆,再将globalX、globalY转换到和此矩阵相同的坐标空间,得出对应空间的点;
sHelperMatrix.copyFrom(child.transformationMatrix);
sHelperMatrix.invert();
MatrixUtil.transformCoords(sHelperMatrix, localX, localY, sHelperPoint);
target = child.hitTest(sHelperPoint);
(2)将转换后的点,传入子对象的hitTest()方法进行检测;
if (getBounds(this, sHelperRect).containsPoint(localPoint)) return this;