我有一個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
變到達鼠標的實際位置。
那麼如何讓鼠標在正確的位置?