缩放关卡加载器背后的数学原理实际上相当简单。首先,您应该从选择默认比例开始。这意味着将您的 240x320 屏幕分辨率以及平台的坐标和尺寸
现在要缩放它,我们应该知道运行游戏的设备的屏幕分辨率。以下将为您获取屏幕分辨率:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
如果您的目标是 API 13 之前的版本,则不能使用 display.getSize,而是应该使用:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
现在我们有了新的分辨率,我们可以找到默认 (240x320) 分辨率和新设备上的分辨率之间的比例差异:
float xScale = (float)width / 240.0f;
float yScale = (float)height / 320.0f;
将这些值强制为浮点数或双精度值很重要,因为如果将它们保留为整数,那么它将无法正确缩放,因为十进制值将被省略,并且您将获得一个四舍五入的整数。这是不准确的,并且不允许适当的缩放。
一旦你有了比例,你就可以开始相应地调整和移动你的对象。
例如,如果您的第一个平台的位置是
int x = 200;
int y = 120;
那么您只需将这些值乘以比例即可:
int x = (int)(200 * xScale);
int y = (int)(120 * yScale);
您还需要为平台的尺寸执行此操作:
int width = (int)(30 * xScale);
int height = (int)(15 * yScale);
将 30 和 15 替换为平台的宽度和高度
重要提示:
以这种方式缩放坐标时,您需要缩放所有坐标。这意味着如果您使用坐标来检测边界和碰撞,则还必须相应地缩放以匹配。
这是另一篇关于如何获得安卓设备分辨率的文章。
获取屏幕分辨率
希望这会有所帮助,祝你好运。