使用Corona SDK:从左至右填充一个条形图。

我正在学习 Corona SDK 并且对 lua 也不熟悉(我主要做 ruby 和一些 javascript)。

我有一个条形图要填充,当用户完成某些任务时。我已经设置了如下内容:

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

            -- 内矩形填充
    powerBarFill = display.newRect(211,7,0,7)
    powerBarFill:setFillColor(234,183,30)

当发生“任务”时,我将 1 添加到 powerBarFill.width,我认为它会从左到右增长。但实际上它是从中心开始增长的,即它的 x 在中心,宽度从两侧延伸。

如何保持左侧不变,让右侧增长呢?我能否将其设置为其 x 位置实际上位于左侧而不是中间?似乎这样做就可以了。

提前致谢。

原文链接 https://stackoverflow.com/questions/9883133

点赞
stackoverflow用户449554
stackoverflow用户449554

我在创建进度条时也遇到了这个问题。问题在于矩形的参考点。默认的参考点在对象的中心,就像你注意到的那样。你可以使用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
2012-03-27 16:22:24
stackoverflow用户511258
stackoverflow用户511258

如果它的宽度是从两侧的X位置开始的:

1)它应该从以下位置开始:

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

2)每一帧,加上:

incrs = 1 --增加量
width = width + incrs
x = x + incrs / 2
2012-03-27 16:40:20