Corona SDK: заполнить панель слева направо - PullRequest
2 голосов
/ 27 марта 2012

Я изучаю 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)       

Когда происходит «материал», я добавляю 1 к powerBarFill.width, который, как я думал, заставит его расти слева направо. Но он на самом деле растет из центра, то есть его х находится в центре, а ширина простирается с обеих сторон от него.

Каков наилучший способ сохранить левую сторону статичной и вырастить правую сторону? Могу ли я установить его так, чтобы его позиция х находилась на левой стороне, а не в середине? Похоже, это могло бы сделать это.

ура заранее

Ответы [ 2 ]

5 голосов
/ 27 марта 2012

Я также столкнулся с этой проблемой при создании индикатора выполнения. Проблема с опорной точкой прямоугольника в. Как вы заметили, эталонная точка по умолчанию находится в центре объекта. Вы можете использовать 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 голосов
/ 27 марта 2012

Если ширина от позиции Х с обеих сторон:

1) Должен начинаться с:

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

2) Каждый кадр добавить:

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