在使用不同设备时自动更改对象的位置

我对lua和corona仍然很陌生(确切地说只有3天),我正在尝试在多个设备上使用屏幕显示我的对象。据我所知,要使对象自动重新定位,需要获取屏幕大小并对其进行一些计算,以进行必要的调整。以下是我试图做的示例:

obj1 = display.contentWidth*0.50

然后,这将使我的对象位于屏幕的中央,但有时这不太有效,所以我的问题是,自动重新定位我的对象有更好的方法吗?尤其是那些不再位于屏幕中央的对象。

点赞
用户1979583
用户1979583

我正在用另一种方法来实现。我认为这可能对你有所帮助。根据您编码的模拟器,只需为宽度和高度创建乘数值,并将每个宽度或高度参数与此相乘(如下所示):

--------------------------------------------------------------------------
-- 选择 xMultiplier 和 yMultiplier 值 --
--------------------------------------------------------------------------
  local xMultiplier = display.contentWidth/320
  local yMultiplier = display.contentHeight/480
  --[[在此我使用了320,因为我正在使用 iPhone 模拟器
  (320 是您编码的模拟器的宽度)
  在此我使用了480,因为我正在使用 iPhone 模拟器
  (480 是您编码的模拟器的高度)--]]

--------------------------------------------------------------------------
-- 创建并定位背景 --
--------------------------------------------------------------------------
  local bg = display.newImageRect("bg.png",320*xMultiplier,480*yMultiplier)
  bg.x = 160*xMultiplier ; bg.y = 240*yMultiplier

--------------------------------------------------------------------------
-- 创建并定位对象 --
--------------------------------------------------------------------------
  local rect = display.newImageRect(0,0,50*xMultiplier,50*yMultiplier)
  rect.x = 160*xMultiplier ; rect.y = 100*yMultiplier

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

注意:如果您在项目中使用了 config.lua 文件,则此方法可能无效。

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

缺点:这可能会影响高分辨率设备上图片的清晰度。因此,选择适合分辨率的图片。

继续编码... :)

2013-03-14 09:30:03
用户1870706
用户1870706

我实现这个的方法是基于一个原则:设备上的物品要么基于左/右侧或中心来定位。顺便提一下,我将使用水平应用程序。

某些物品需要锚定在屏幕的左侧或右侧。有些需要锚定在屏幕顶部,有些需要与屏幕中心保持一定距离。

考虑这张图片:Screen shot of a game

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

homeIcon.x = 32
homeIcon.y = 32
gearIcon.x = 32
gearIcon.y = 64  -- 或者它们实际的数字位置。

右侧的得分需要距离屏幕的右侧和顶部保持固定的距离:

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

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

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

在本例中宽度小于 iPhone 的 iPad 上,主页、齿轮和得分按钮将更接近屏幕中心。在 iPhone 5 或宽屏 Android 上,它们会分散开来。

上面的示例并不能真正帮助理解一些居中的想法。虽然没有屏幕截图,但是假设您正在为一个游戏的登录表单布局,您需要收集用户名、密码和提交按钮。您可以这样定位它们:

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

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

2013-03-18 01:52:18