Понимание атрибутов anchor_x и anchor_y в Pyglet - PullRequest
0 голосов
/ 19 марта 2019

Я новичок в Python и разработке игр и только начал изучать Pyglet (1.3.2).Я пытаюсь играть с лейблами и их позиционированием.

Я понимаю, что координаты x и y указывают положение меток / изображений в окне в пикселях.В случае изображений или спринтов значения привязки определяют позицию, с которой изображение привязывается к экрану (что, в свою очередь, влияет на их движение).

Однако я не до конца понимаю влияние привязки в ярлыках.Согласно этому документу pyglet, в нем говорится:

Положение текста задается координатами x и y.Смысл этих координат задается параметрами anchor_x и anchor_y.

Какой смысл подразумевается здесь?Если у них нет движения, разве их положение не должно оставаться фиксированным независимо от значений привязки?

Кроме того, когда я запускаю программу с этими метками:

   label1 = pyglet.text.Label('Window1',font_name='Times New Roman', font_size=36, x=200, y=100,anchor_x='center', anchor_y='center')        
   label2 = pyglet.text.Label('Window2',font_name='Times New Roman', font_size=36, x=200, y=100,anchor_x='left', anchor_y='center')

Это производит вывод, который снова труденпонимать, что Window1 (anchor_x = 'center') больше влево, чем Window2 (anchor_x = 'left'):

enter image description here

Может кто-нибудь уточнитьзначение якорей и как рассчитывается окончательная позиция метки.Спасибо!

1 Ответ

1 голос
/ 19 марта 2019

Таким образом, якоря работают так, что они просто определяют точку размещения объекта.Это означает, что если у вас есть center в качестве якоря, центр объектов будет расположен по заданной координате (в вашем случае x=200, y=100)

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

Если вы проанализируете свое собственное изображение, это будет совершенно ясно, здесь две точки прямо соответствуютдруг друга:

enter image description here

Они расположены по одной и той же координате, но поскольку вы заново определили якорь - он поместит центрили угол в этой позиции.

Красным цветом вы определили center в качестве своего якоря.И синим цветом вы определили bottom left (по умолчанию).

(не обращайте внимания на то, что точки не идеально выровнены, это было сложно сделать на сенсорной панели ноутбука, находясь в поезде)

Надеюсь, это имеет смысл.Также см. Мой комментарий выше для другого способа описания этого.

...