在网格中均匀生成多个图像

我有40个对象以5x8网格样式放置。对象的图像大小为50x50。我用于生成的代码如下:

local spawnImage=function(x,y)
    circle[bCircle] = display.newImage( "dot1.png" )
    circle[bCircle].x =-5+x*55
    circle[bCircle].y = 60+y*55
    sceneGroup:insert(circle[bCircle])
    circle[bCircle].value = bCircle
    circle[bCircle].tag=false
    numCircle[bCircle]= display.newText(  circle[bCircle].value, spX+x*55, spY+y*55, "Helsinki", 16 )
    circle[bCircle]:addEventListener( "touch", touchi )
    bCircle = bCircle + 1
end

    for y=1,8 do
       for x=1,5 do
         spawnImage(x,y)
       end
     end

问题是我无法在不同设备(模拟器)中均匀放置它们

iPad iPad截图

iPhone 6 iPhone 6

iPhone 5 输入图片说明

有什么建议吗?如何在不同设备上均匀放置对象?

谢谢!

点赞
用户2858170
用户2858170

你没有考虑到显示分辨率,而所有设备的分辨率很可能不同。由于你使用了固定的偏移量和大小,因此你会得到不同的结果。

如果你定义了项目的内容属性,Corona 可以帮你处理缩放。

https://docs.coronalabs.com/daily/guide/basics/configSettings/index.html

2016-02-07 21:26:15
用户3041972
用户3041972

在你的代码开头使用以下代码,然后使用 _W_H 作为屏幕宽度和高度:

_W= display.contentCenterX
_H= display.contentCenterY

这样你的代码就会是:

_W= display.contentCenterX
_H= display.contentCenterY

local spawnImage=function(x,y)
    circle[bCircle] = display.newImage( "dot1.png" )
    circle[bCircle].x = x* (1/5)*_W
    circle[bCircle].y = y* (1/8)*_H
    sceneGroup:insert(circle[bCircle])
    circle[bCircle].value = bCircle
    circle[bCircle].tag=false
    numCircle[bCircle]= display.newText(  circle[bCircle].value, spX+x*55, spY+y*55, "Helsinki", 16 )
    circle[bCircle]:addEventListener( "touch", touchi )
    bCircle = bCircle + 1
end

for y=1,8 do
   for x=1,5 do
     spawnImage(x,y)
   end
 end
2016-02-13 09:35:38