在使用不同设备时自动更改对象的位置
2013-3-14 6:16:20
收藏:0
阅读:176
评论:2
我对lua和corona仍然很陌生(确切地说只有3天),我正在尝试在多个设备上使用屏幕显示我的对象。据我所知,要使对象自动重新定位,需要获取屏幕大小并对其进行一些计算,以进行必要的调整。以下是我试图做的示例:
obj1 = display.contentWidth*0.50
然后,这将使我的对象位于屏幕的中央,但有时这不太有效,所以我的问题是,自动重新定位我的对象有更好的方法吗?尤其是那些不再位于屏幕中央的对象。
点赞
用户1870706
我实现这个的方法是基于一个原则:设备上的物品要么基于左/右侧或中心来定位。顺便提一下,我将使用水平应用程序。
某些物品需要锚定在屏幕的左侧或右侧。有些需要锚定在屏幕顶部,有些需要与屏幕中心保持一定距离。
考虑这张图片:
主页图标和设置图标需要距左侧边缘一些像素。它们还需要距离顶部有几个像素。我会使用固定的数字来定位它们:
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
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
我正在用另一种方法来实现。我认为这可能对你有所帮助。根据您编码的模拟器,只需为宽度和高度创建乘数值,并将每个宽度或高度参数与此相乘(如下所示):
-------------------------------------------------------------------------- -- 选择 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 文件,则此方法可能无效。
优点:这只需要一张图片。
缺点:这可能会影响高分辨率设备上图片的清晰度。因此,选择适合分辨率的图片。
继续编码... :)