2

我还是 lua 和 corona 的新手(确切地说是 3 天),我正在尝试使用多个设备在屏幕上显示我的对象。据我了解,要使对象自动重新定位,我需要获取屏幕尺寸并对其进行一些计算以进行必要的调整。这是我正在尝试做的一个示例:

obj1 = display.contentWidth*0.50

然后这会将我的对象放在屏幕中间,但是在某些情况下这似乎并不有效,所以我的问题是,自动重新定位我的对象的更好方法是什么?尤其是不再位于屏幕中心的对象。

4

2 回答 2

2

我正在以不同的方式做这件事。我想这可能会对你有所帮助。在我看来,只需为宽度和高度创建乘数值(根据您在哪个模拟器中编码),然后将每个宽度或高度参数与此相乘(如下所示):

--------------------------------------------------------------------------
       -- choosing xMultiplier and yMultiplier values --
--------------------------------------------------------------------------
  local xMultiplier = display.contentWidth/320  
  local yMultiplier = display.contentHeight/480
     --[[ I used 320 here because i'm using iPhone Simulator 
         (320 is the width of the simulator you are coding in)
          I used 480 here because i'm using iPhone Simulator 
          (480 is the height of the simulator you are coding in)--]]


--------------------------------------------------------------------------
       -- creating background and positioning it --
--------------------------------------------------------------------------
  local bg = display.newImageRect("bg.png",320*xMultiplier,480*yMultiplier)
  bg.x = 160*xMultiplier ; bg.y = 240*yMultiplier

--------------------------------------------------------------------------
       -- creating object and positioning it -- 
--------------------------------------------------------------------------
  local rect = display.newImageRect(0,0,50*xMultiplier,50*yMultiplier)
  rect.x = 160*xMultiplier ; rect.y = 100*yMultiplier

--------------------------------------------------------------------------

注意:如果您在项目中使用 config.lua 文件,这可能不起作用。

优点:这只需要一张图片。

缺点:它可能会影响高分辨率设备中图像的清晰度。因此,请选择具有合适分辨率的图像。

继续编码... :)

于 2013-03-14T09:30:03.557 回答
2

我这样做的方式是基于事物将根据设备的一侧或从中心定位的原理。顺便说一句,我将为此使用水平应用程序。

有些东西需要锚定在左边缘或右边缘。有些东西需要固定在屏幕顶部,而其他东西需要离中心有一段距离。

考虑这张图片: 游戏截图

主页图标和设置图标需要距离左边缘几个像素。它们还需要从顶部向下几个像素。我会使用一个固定的数字来定位它们:

homeIcon.x = 32
homeIcon.y = 32
gearIcon.x = 32
gearIcon.y = 64  -- or whatever numbers they really are.

右边的分数需要离右边缘和顶部有固定的距离:

scoreText.x = display.contentWidth - 64
scoreText.y = 32

底部的火鸡位置不应该根据设备宽度的形状而改变,但可以根据设备的高度移动。

turkey.x = display.contentCenterX
turkey.y = display.contentHeight - 64

在本例中,在比 iPhone 更窄的 iPad 上,home、gear 和 score 按钮最终会更靠近中心。在 iPhone 5 或宽屏 Android 上,它们分散开来。

上面的例子对一些居中的想法没有真正的帮助。我没有这方面的屏幕截图,但假设您正在为一个正在收集用户名和密码的游戏布置登录表单,并且您有一个提交按钮。您可以将它们定位为:

 usernameField.y = display.contentCenterY - 64
 passwordField.y = display.contentCenterY 
 submitButton.y = display.contentCenterY + 64

然后无论设备的高度如何,这些 UI 元素都将与中心保持相同的距离,从而使您的表单看起来不错。如果您使用与顶部的固定距离,则表单将根据设备的大小移动。在这里,他们的位置保持不变。

于 2013-03-18T01:52:18.697 回答