Corona SDK:从左到右填充一个栏

时间:2012-03-27 03:48:12

标签: lua corona

我正在学习Corona SDK,也是lua的新手(我主要做ruby和一些javascript)。

我有一个酒吧,我想填写用户做的东西。我把它设置如下:

            --outer rectangle
    powerBar = display.newRect(210, 6, 24, 9)
    powerBar.strokeWidth = 1
    powerBar:setStrokeColor(254,203,50) 
    powerBar:setFillColor(0,0,0,0)  

            --inner rectangle which fills up
    powerBarFill = display.newRect(211,7,0,7)
    powerBarFill:setFillColor(234,183,30)       

当“东西”发生时,我向powerBarFill.width添加1,我认为这会使它从左向右增长。但是,它实际上是从中心生长出来的,即它的x位于中心,宽度从那里向两侧延伸。

什么是保持左侧静止并增长右侧的最佳方法?我可以设置它的x位置实际上是在左侧而不是在中间吗?似乎可能会这样做。

提前欢呼

2 个答案:

答案 0 :(得分:5)

创建进度条时我也遇到了这个问题。问题在于rect的参考点。您已经注意到,默认参考点位于对象的中心。您可以使用object:setReferencePoint()进行更改。我相信你想使用display.BottomLeftReferencePoint值:

powerBar:setReferencePoint(display.BottomLeftReferencePoint)

请记住,在设置x,y值之前必须设置此值。因此,在您的情况下,您需要在创建矩形后设置参考点,然后再次为x,y分配值(即使您已在newRect构造函数中执行此操作):

powerBar = display.newRect(210, 6, 24, 9)
powerBar:setReferencePoint(display.BottomLeftReferencePoint)
powerBar.x, powerBar.y = 210, 6

答案 1 :(得分:2)

如果它的宽度来自两侧的X位置:

1)它应该从:

开始
Centre - (Width when it's full / 2)

2)每一帧,添加:

incrs = 1 --Amount to increase by
width = width + incrs
x = x + incrs / 2