理解Pyglet中的anchor_x和anchor_y属性

问题描述 投票:0回答:1

我是Python和游戏开发的新手,刚开始学习Pyglet(1.3.2)。我正在尝试使用标签及其定位。

我知道x和y坐标表示窗口上标签/图像的像素位置。在图像或短跑的情况下,锚值确定图像锚定到屏幕的位置(这反过来影响它们的移动)。

但是,我并不完全了解锚标在标签中的影响。根据this 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

有人可以详细说明锚点的重要性,以及如何计算标签的最终位置。谢谢!

python-2.7 pyglet
1个回答
1
投票

所以锚点的工作方式是它们只是定义一个对象的放置点。意思是,如果你有center作为你的锚点,对象中心将被放置在给定的坐标(在你的情况下,x=200, y=100

并且左下角的锚点将告诉Pyglet将对象放置在给定位置的左下角,而不是那些坐标处的中心。

如果你分析自己的图像,这将非常清楚,这里两个点直接相互对齐:

enter image description here

它们被定位在相同的坐标上,但是因为你已经重新定义了锚点 - 它会将中心或角落放在那个位置。

红色,你已经定义了center作为你的锚点。而在蓝色,你已经定义了bottom left(默认)。

(忽略点不完美对齐,在摇摆的火车上在笔记本电脑触摸板上做的很棘手)

希望这是有道理的。另请参阅我的上述评论,以了解另一种描述方式。

© www.soinside.com 2019 - 2024. All rights reserved.