首先,我专门为galaxy s3绘制了一些东西。因此,第一步是在您在 corona 中打开新项目后立即将该设备的屏幕尺寸输入配置或预设区域。720 x 1280。
然后确保将视图从 iPhone(默认)更改为 Galaxy s3 以使用所有内容空间区域,因为 iphone 太小了。
所以。我从这个开始:
步骤1
local place1 = display.newImageRect("map/1.billiard.jpg", 720, 1280)
place1.x = 720
place1.y = 1280
这产生了
然后我告诉自己,电晕在图像的中心,所以如果我能让图像的中心位于屏幕/显示器的中间......因为现在,图像的中心在720、1280,我为 Galaxy s3 设置的配置区域中可用的最后一个坐标。(右下角)
所以我做了这个
第2步
local place1 = display.newImageRect("map/1.billiard.jpg", 720, 1280)
place1.x = 720/2
place1.y = 1280/2
这产生了
请记住,我特意将图像的尺寸设置为 720 x 1280 以完全填满屏幕,这样我就可以获得位置感。
然后,我告诉自己我现在需要改变图像的尺寸,我希望这是屏幕 x 距离的 1/2 和屏幕 y 距离的 1/5。
所以我做了这个
第 3 步
local place1 = display.newImageRect("map/1.billiard.jpg", 720/2, 1280/5)
place1.x = 720/2
place1.y = 1280/2
这产生了
此时,我将图像置于屏幕中间,具有我想要的尺寸,我所要做的就是将它放在左上角,因为会有其他房间以网格方式出现。(例如,正确放置后,另一个房间将适合此图像右侧的空间)
所以我做了这个
第4步
local place1 = display.newImageRect("map/1.billiard.jpg", 720/2, 1280/5)
place1.x = 720/2 - (.5*place1.contentWidth)
place1.y = 1280/2
这产生了
只需看一下,您就可以知道如果它在中心,您需要减去图像 x 距离的一半才能使其位于手机的左边缘——本实验的重点。这很有效,因为我将图像居中并首先使其适合整个屏幕。现在到手机边缘的所有距离都相对于图像的 x 和 y 距离。:DD
继续。,,
让图片到顶部边缘
我做了这个
第 5 步
local place1 = display.newImageRect("map/1.billiard.jpg", 720/2, 1280/5)
place1.x = 720/2 - (.5*place1.contentWidth)
place1.y = 1280/2 - (2*place1.contentHeight)
这产生了
因为我需要减去图像 y 距离的两倍。
瞧!
图像位于左上角并拉伸到我想要的尺寸。现在一切都与图像的距离有关,例如,如果我想要在这个房间下方的另一个房间,我可以(从第 4 步开始)减去图像的一个 y 距离而不是该距离的两倍。
像这样
local place1 = display.newImageRect("map/1.billiard.jpg", 720/2, 1280/5)
place1.x = 720/2 - (.5*place1.contentWidth)
place1.y = 1280/2 - (2*place1.contentHeight)
local place1 = display.newImageRect("map/1.billiard.jpg", 720/2, 1280/5)
place1.x = 720/2 - (.5*place1.contentWidth)
place1.y = 1280/2 - (1*place1.contentHeight)
这会产生
这些:
object.contentWidth
object.contentHeight
当尝试将图像向左或向右移动其自身宽度或高度的一定比例时会派上用场。
前面的方法通过使用图像的默认中心参考点来帮助理解定位图像,并首先将该图像定位在显示器的中心!
另一种更简单的方法:将图像的参考点更改为左上角的参考点,然后从那里控制事物。在这种情况下,图像的 x 和 y 位置将为 0,将其放在屏幕的左上角,然后从那里将尺寸更改为显示器高度的 1/5 和显示器宽度的 1/2。:D
这样的事情效率更高:
_W = display.contentWidth
_H = display.contentHeight
local place1 = display.newImageRect("map/1.billiard.jpg", _W/2, _H/5)
place1:setReferencePoint(display.TopLeftReferencePoint)
place1.x = 0
place1.y = 0
问题解决了