首页 文章

与Lua在Corona SDK中的位置混淆

提问于
浏览
2

我正在使用电晕模拟器 . 我显示了display.contentWidth和display.contentHeight . 宽度是320,高度是480.我还发了一个文字说“你好”,然后玩定位 .

我注意到x值看起来非常准确,我会将文本的x值设置为0,它的中心将被覆盖一半,一半显示 . x值为320的结果相同,但在手机模拟器的另一侧 .

当我将y值设置为0时,它位于Carrier和伪信号强度符号的正下方,完全显示出来 . 当我将y值设置为480高度最大值时,它将与手机底部有大约一英寸的间隙 . - 我的想法是它应该在两个方向垂直覆盖:-S

在电晕模拟器中,我在Iphone5中查看它,并注意到当我改为Iphone时它会显示出我所期望的 . 有了Iphone 5,droid和其他一些视图,它会给我这些结果 .

***** 我的问题是我的程序在所有设备上看起来是否相同,或者电晕模拟器是否准确显示它的外观 . 如果它在各种设备上显示不同,为什么?

width = display.newText (display.contentWidth .. "px is Width", 200, 200, nil, 30)
height = display.newText (display.contentHeight .. "px is Height", 150,300, nil, 30)

text = display.newText ("Hello", 0, 480, nil, 30)

2 回答

  • 2

    iPhone 5的分辨率与iPhone 4(显然)不同,但Corona不是接收不同的display.content *值,而是使用display.screenOrigin来处理它 . 这是所使用的显示器与标准显示器(iPhone / iPhone 4)之间的差异 . 如果您打印这些值,例如:

    print("Origin x = "..tostring(display.screenOriginX))
    print("Origin y = "..tostring(display.screenOriginY))
    

    然后你会看到其中一个,取决于你的模拟器的方向,将是“-44” . 这是像素的差异 . 在你的例子中我假设的是纵向方向,你需要将Y置于顶部和底部,如下所示:

    --For positioning at 'true 0'
    obj.y = 0 + (display.screenOriginY)
    
    --Or, for positioning at "true bottom"
    obj.y = 0 - (display.screenOriginY)
    

    希望这可以帮助 . 有关display.screenOrigin的更多信息,请参阅Corona documentation for XCorona documentation for Y

    古实

  • 2

    每个对象都有一个矩形边界,如下图1所示 . 这里有一个文本对象,边界用黑色表示 .

    enter image description here

    顶部的 red dot 是对象的默认锚点 . 如果您没有将文本的x和y位置指定为(obj.x = ...&obj.y = ...),那么电晕将根据显示对象创建行中的点定位对象(即, display.newText(""......) ) . 例如,如果您有以下代码:

    local text = display.newText ("myText", 0, 0, nil, 30)
    

    然后放置文本使得红点位于(0,0) . 这就是你在状态栏下看到它的原因 .

    日冕中的一般物体放置如下:

    enter image description here

    带下划线的 myText 表示根据对象创建行中的点对文本对象的不同定位 . 即;

    local text = display.newText("myText",x,y,nil,30)
    

    _w ==> display.contentWidth
    _h ==> display.contentHeight

    保持编码.................. :)

相关问题