2012-03-27 59 views
2

我学习科罗娜SDK,并相信新的LUA以及(我主要做Ruby和一些JavaScript)。科罗娜SDK:填补酒吧从左至右

我有一个酒吧,我想填满,因为用户做的东西。

  --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)  

当“东西”发生,我加1 powerBarFill.width,我本以为这使其成长从左至右:我如下设置。但是,它实际上是从中心向外扩展的,即它的x位于中心,宽度从中心延伸。

最好的方法来保持左侧静态和增长的右侧?我可以设置它,使它的x位置实际位于左侧而不是中间位置?似乎可能会这样做。

欢呼提前

回答

5

创建进度条,当我碰到的这个问题为好。问题在于矩形的参考点。正如您注意到的那样,默认参考点位于对象的中心。您可以使用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 
2

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

1)它应开始于:

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

2)每帧中,添加:

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

McStretch的解决方案可能效果最好,但该解决方案几乎适用于所有平台。我建议接受他,因为它会更好地回答你的问题。 – 2012-03-27 16:41:17

+0

两者都是比我的删除和每次是为给予好评更新:) – 2012-03-30 14:51:06

+0

由于时间重绘填充条的临时解决方案更好:) – 2012-03-30 15:13:01