当屏幕方向改变时,如何在Corona中控制屏幕对齐?

时间:2014-03-13 10:31:34

标签: lua corona

我已经设置了我的config.lua,以便我的内容区域位于屏幕的顶部,并设置了内容区域的尺寸,使其仅填充iPhone4屏幕,但留下了空白iPhone5屏幕的底部。

application = 
{
    content = 
    {
        width = 640,
        height = 960,
        scale = "letterbox",
        xAlign = "center",
        yAlign = "top",     
    }
}

这在纵向模式下很好,但是当手机旋转到横向时,内容现在显示为左对齐,而不是中心对齐 - 好像Corona没有改变它的概念" xAlign&# 34;和" yAlign"屏幕旋转时的意思。

有什么办法可以在屏幕旋转时以编程方式更改xAlign和yAlign值吗?或者更好的是,是否有一种配置可以让Corona更合理地处理屏幕旋转和对齐?

我知道我可以通过移动小组来获得我想要的相同效果,我可以向右移动一点,但我想找到一个不是黑客的答案。

请参阅下文,了解我正在谈论的内容:

enter image description here

这里是main.lua:

local myGroup

local function drawScreen()
    myGroup = display.newGroup( )

    local top = 0
    local left = 0
    local bottom = display.contentHeight
    local right = display.contentWidth

    local r2 = display.newRect( left, top, right, bottom )
    r2:setFillColor(0.4, 0.4, 0.4)
    r2.anchorX = 0
    r2.anchorY = 0
    myGroup:insert(r2)
end

local function clearScreen()
    if (myGroup ~= null) then
        myGroup:removeSelf()
    end
    myGroup = nil
end

local function onOrientationChange( event )
    clearScreen()
    drawScreen()
end

-- and we're running

Runtime:addEventListener( "orientation", onOrientationChange ) 

-- hide status bar
display.setStatusBar( display.HiddenStatusBar )

drawScreen()

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。有时使用Corona和信箱缩放非常有趣。

build.settings中,我确保将此设置为方向:

orientation = {
    default = "portrait",
    supported = { "portrait", "landscapeLeft", "landscapeRight"}
},  

在主文件中,我更改为:r2.anchorX = 0.5并切换为local left = display.actualContentWidth/2

这似乎已经成功了。我永远无法让xAlignyAlign做任何事情。我改变了它们,但从未见过结果。

所以我会玩我发布的内容。信箱可能会变得非常奇怪。我不确切地知道为什么在风景中那个盒子一直向左推。两侧应该有相同的黑条。但由于某种原因,没有。如果这让你走上正确的道路,请告诉我。