Android:Andengine设置精灵位置,可在所有设备上运行

Android:Andengine设置精灵位置,可在所有设备上运行,android,andengine,dimension,Android,Andengine,Dimension,我正在使用和引擎制作一个游戏,当我试图以通用的方式在所有设备上运行时,我遇到了麻烦 我需要在背景精灵的特定位置设置一个精灵,它应该可以在所有屏幕上工作。。。我的背景屏幕的大小与设备的尺寸相同 我尝试使用像素,比如Glaxy S3 ha尺寸720*1280 我根据它在位置(584608) 以及我的HTC experia ha维度(320480) 所以我需要将其设置为(244172) 我已经尝试了以下所有方法来设置精灵的位置,但如果有任何工作 我已经尝试了以下许多方法来制作一些公式,使我能够做到这一

我正在使用和引擎制作一个游戏,当我试图以通用的方式在所有设备上运行时,我遇到了麻烦

我需要在背景精灵的特定位置设置一个精灵,它应该可以在所有屏幕上工作。。。我的背景屏幕的大小与设备的尺寸相同

我尝试使用像素,比如Glaxy S3 ha尺寸720*1280

我根据它在位置(584608)

以及我的HTC experia ha维度(320480)

所以我需要将其设置为(244172)

我已经尝试了以下所有方法来设置精灵的位置,但如果有任何工作

我已经尝试了以下许多方法来制作一些公式,使我能够做到这一点,但找不到任何。。请告知

final Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

 metrics.density;
 metrics.densityDpi;
 metrics.heightPixels);
 metrics.scaledDensity);
 metrics.widthPixels);
 metrics.xdpi);
 metrics.ydpi);



Point point = getDisplaySize(display);
 CAMERA_WIDTH = point.x;
 CAMERA_HEIGHT = point.y;
 DisplayMetrics dm = new DisplayMetrics();     getWindowManager().getDefaultDisplay().getMetrics(dm);
 double x = Math.pow(dm.widthPixels/dm.xdpi,2); 
 double y = Math.pow(dm.heightPixels/dm.ydpi,2);
 double screenInches = Math.sqrt(x+y);
 int widthPix = (int) Math.ceil(dm.widthPixels * (dm.densityDpi / 160.0));

//CAMERA_WIDTH = display.getWidth();
//CAMERA_HEIGHT = display.getHeight();
这个问题有点复杂。。如上所述,我尝试使用像素,比如说Glaxy S3 ha*尺寸720*1280,所需的精灵位置是(584608) 所以我设置了一种方式(摄像头宽度/1.233f,摄像头高度/2.112f)*

但HTC experia具有尺寸*320*480,因此根据(摄像头宽度/1.233f,摄像头高度/2.112f)所需的位置为(2599.5227.27)* 但根据显示,这是错误的。。。
当我为experia将其设置为(244172)时,它的工作状态非常完美。。。。请提供帮助。

并且Engine提供多种解决策略。它们用于确定
RenderSurfaceView
的大小,从而根据屏幕大小确定游戏在屏幕上的实际大小

您应该使用
比率解决方案策略
:它将使用尽可能大的大小,同时保持宽度和高度之间的恒定比率。通过保持相机的大小不变,它显示的所有内容都将按此恒定比例缩放,该比例在不同的设备上会有所不同

示例:让
CAMERA\u WIDTH=720
CAMERA\u HEIGHT=480
。如果我们以这种方式创建相机和引擎选项:

this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
EngineOptions options = new EngineOptions(..., new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), mCamera);
比率为720/480=1.5。 在场景中放置精灵时,请使用恒定坐标。假设我们把它放在屏幕中间:

Sprite sprite = new Sprite(CAMERA_WIDTH / 2, CAMERA_HEIGHT / 2, ...);
所以:

  • 在屏幕尺寸为720x480的设备上,精灵将放置在(360240)屏幕坐标处
  • 在屏幕尺寸为480x320的设备上,精灵将放置在(240160)屏幕坐标处
  • 在屏幕尺寸为800x480的设备上,精灵将放置在(400240)屏幕坐标处

等等…

谢谢你的评论,但我的问题有点复杂。。正如我所说,我尝试使用像素,比如说Glaxy S3 ha尺寸为720*1280,所需的精灵位置为(584608),因此我设置了方式(CAMERA_WIDTH/1.233f,CAMERA_HEIGHT/2.112f),但HTC experia的尺寸为320*480,因此所需的位置(CAMERA_WIDTH/1.233f,CAMERA_HEIGHT/2.112f)为(2599.5227.27)但根据显示,这是错误的。。。当我为experia设置(244172)时,它的工作状态非常完美。。。。请帮助..您好,我怀疑我使用的是比率分辨率策略,在我的基本游戏活动中,我覆盖了onsetContent视图,但在此之后,边距仅出现在一侧,如何解决此问题?这是我的堆栈问题的链接