2012-12-09 31 views
1

我使用和发动机,当我试图使它在所有设备上工作的话,我是在急难通用的方式做一个游戏......安卓:Andengine设置精灵的立场,即在所有设备上工作

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

我尝试使用像素说让Glaxy S3 ha尺寸720 * 1280

而我根据它来设置我的精灵位置(584608)

和我的HTC Experia还公顷尺寸(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公顷*尺寸720×1280和所需的子画面的位置是(584608) 所以我在方式设定(CAMERA_WIDTH/1.233f,CAMERA_HEIGHT/2.112f)*

BUT HTC Experia还具有尺寸* 320 * 480因此,所需要的位置根据(CAMERA_WIDTH/1.233f,CAMERA_HEIGHT/2.112f)为(2599.5,227.27)* 但这个错误根据显示... 当我将它设置为(244,172)进行实验时完善。 ...请帮忙。

回答

3

AndEngine提供多种解决方案策略。它们用于确定RenderSurfaceView的大小,因此,屏幕上的游戏的实际大小取决于屏幕大小。

您应该使用RatioResolutionPolicy:它将使用尽可能大的尺寸,同时保持宽度和高度之间的恒定比例。通过保持相机的大小不变,它显示的所有内容都将按照这个恒定比例进行缩放,而这个比例在不同设备上会有所不同。例如:CAMERA_WIDTH = 720CAMERA_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的设备,精灵将被放置在(360,240)屏幕坐标。
  • 在屏幕尺寸为480x320的设备上,精灵将被置于(240,160)屏幕坐标处。
  • 在屏幕尺寸为800x480的设备上,精灵将被放置在(400,240)屏幕坐标处。

等等......

+0

钟感谢评论,但我的问题是有点复杂的。至于我告诉我试图用像素让利说Glaxy S3公顷尺寸720 * 1280和所需的精灵位置(584,608) 所以我设置方式(CAMERA_WIDTH/1.233f,CAMERA_HEIGHT/2.112f)但HTC实验的尺寸为320 * 480 因此,根据(CAMERA_WIDTH/1.233f,CAMERA_HEIGHT/2.112f)所需的位置是(2599.5 ,227.27)但这个错误根据显示... 当我设置它(244,172)为实验其工作完美....请帮助.. – Imran

+0

请建议解决方案和信息m如果想要更多的信息.​​.. – Imran

+0

嗨,我怀疑我正在使用比例分辨率政策,在我的基本游戏活动中,我重写了首发内容视图但在此之后,保证金只出现在一侧如何CAn我解决了这个问题?这里是我的堆栈问题的链接http://stackoverflow.com/questions/14427152/how-to-override-onsetcontentview-while-using-ratio-resolution-policy-in-andengin –