我有一个Android游戏,画布缩小到看起来一样使用该代码的所有设备:Android:如何正确缩放鼠标/触摸输入?
canvas.scale((float)(getWidth()/(double)WIDTH), (float)(getHeight()/(double)HEIGHT))
其中WIDTH
和HEIGHT
分别为1920和1080。我的问题是,我的所有接触碰撞(即用户触摸的形状)使用Path
S和Region
s的处理:
public static boolean collided(Path a, Path b) {
Region clip = new Region(0,0,3000, 3000);
Region rA = new Region();
rA.setPath(a, clip);
Region rB = new Region();
rB.setPath(b, clip);
return !rA.quickReject(rB) && rA.op(rB, Region.Op.INTERSECT);
}
现在我也有另一种标度法(勉强有从我可以任何影响告诉,但有时确实有一定影响力)规模坐标和维度:
public static double scale(double x) {
return dpToPx(x)/Resources.getSystem().getDisplayMetrics().density;
}
我的问题是,这一切的缩放我似乎无法让鼠标在正确的位置。下面是我用它来创建处理鼠标和其他形状之间的碰撞鼠标Path
代码:
mouse.set(x, y);
mousePath.reset();
mousePath.addRect(mouse.x - 10, mouse.y - 10, mouse.x + 10, mouse.y + 10, Path.Direction.CW);
我画mousePath
,看看那里的mousePath是,这是结果我得到(这是在框中绿色,在鼠标实际上是在蓝圈一般地区)
这是更严重的问题,因为它似乎越接近我得到(0,0)的接近mousePath
变到达鼠标的实际位置。
那么如何让鼠标在正确的位置?