Rect的一些问题

将引擎从2.0.5升级到了2.2.2
在Rect的使用上出现了一些问题,描述如下:

若干张扑克从左往右排列,父节点为Layout,spacingX为负数(即右边的扑克有部分重叠在左边的扑克之上)像这样。父节点上做触摸事件监听,通过点击屏幕,转化到目标节点坐标系来获取到触摸到的牌:

问题:升级引擎后,Rect的contains无视层级了。
例如,我点击在如图位置,获取到的是下面那张牌

这和层级有关系?你不是遍历数组,依次判断么······

我这是2D的,层级就是如图所示了
是不是引擎在加入3D后,对2D有了影响

这个没关系,反向遍历你的数组,得到的就是3了吧

我这个就是从右往左遍历的

sorry,我没注意····
我没直接获得过layout的所有孩子····
一般都是我自己维护的数组,我怕children有不确定性····

你把convertToNodeSpaceAR改成convertToNodeSpace

这个接口在2.2.2被废弃了呀

额,还能用。
但是官方给了这个提示
Sorry, cc.Node.convertToNodeSpace is deprecated. Please use convertToNodeSpaceAR instead
替换后就有了上述的问题

如果我要用convertToNodeSpaceAR,我改怎么转化成convertToNodeSpace获取到的结果?

居然都废弃了,区别不大,把x、y一减

convertToNodeSpace (worldPoint) {
        this._updateWorldMatrix();
        math.mat4.invert(_mat4_temp, this._worldMatrix);
        let out = new cc.Vec2();
        math.vec2.transformMat4(out, worldPoint, _mat4_temp);
        out.x += this._anchorPoint.x * this._contentSize.width;   //区别
        out.y += this._anchorPoint.y * this._contentSize.height;  //区别
        return out;
}

convertToNodeSpaceAR (worldPoint) {
        this._updateWorldMatrix();
        math.mat4.invert(_mat4_temp, this._worldMatrix);
        let out = new cc.Vec2();
        return math.vec2.transformMat4(out, worldPoint, _mat4_temp);
 }