是否可以在具有不同屏幕尺寸和密度的多个设备上的画布上以相同的相对速度移动对象?
起初我只是想要一个速度变量:
public int speed = 40;
这会在不同设备上产生不一致的结果。
public int speed = screenWidth / 40;
这仍然会产生糟糕的结果,所以我尝试这样做:
spd = (int) (Math.pow(MainActivity.deviceDensity, 2) + spd);
但结果仍然不一致。那么如何让对象在不同设备上以一致的速度在画布上移动
答案 0 :(得分:4)
实际上,只要您计算屏幕宽度和计算到达另一侧所需的时间,您所拥有的第二个等式将为您提供完美的结果。
所以,让我们说你有另一个时间到达另一边需要的时间:
constant time = 4 seconds/4000 milliseconds;
对于所有设备speed = distance/time
,只要您拥有distance
屏幕宽度,time
就可以计算速度,这将是相同的。distanceX = 1980;
constant time = 4 seconds/4000 milliseconds;
speed = 0.495;
distanceX = 1280;
constant time = 4 seconds/4000 milliseconds;
speed = 0.32;
所有设备都具有相同的速度。
<强>样品:强>
PPI
你可以看到速度减少,因为我们使用较少的{{1}},这是完美的。