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

我已经设置了我的config.lua,以便我的内容区域位于屏幕顶部,并设置了内容区域的尺寸,以便它只填充了iPhone4屏幕,但在iPhone5屏幕底部留下了间隙。

这在竖屏模式下很好,但当手机旋转到横屏时,内容现在显示为左对齐,而不是居中对齐-仿佛Corona在屏幕旋转时没有改变“xAlign”和“yAlign”的含义一样。

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

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

看下面的图片说明:

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() 
点赞
用户756383
用户756383

好的,所以我找到了一个解决方案。使用 Corona 和信封比例时有时真的很有趣。

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

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

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

这似乎解决了问题。我从来没有能够让 xAlignyAlign 有任何作用。我交换了它们,但从未看到结果。

因此,我会尝试我发布的内容。在信封中可能会变得非常奇怪。我不知道为什么在横向时,这个框会一直推到左边。两边应该有相等的黑色条。但由于某种原因没有。让我知道这是否为您指明了正确的方向。

2014-03-13 21:35:58