Pyglet未在正确位置绘制精灵

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

嘿,我在这个问题上停留了很长时间,希望有人可以帮助我:

我正在使用pyglet,并且所有代码都在我的项目中工作(甚至是我遇到的问题),然后我重新启动计算机,突然它不起作用...

这是实例化我的“ Letter”对象的循环:

main_st = ut.makeString("EXNXYXAXDAADUXMDXLGEQTAQXDDQSVXUTSXKHXHRXYFUXLXJUTHXYVADSUXKHUQUIXSJHXHDPKXFQUXILNXORMXRPL")
letter_list = []
for i in range(len(main_st)):
    letter_list.append(l.Letter(pyglet.resource.image("Letters/" + main_st[i] + ".png"),main_st[i],10,10))

这是Letter类的构造方法Letter是pyglet.sprite.Sprite的子类:

def __init__(self,im,iden,xx,yy):

        super(Letter,self).__init__(img=im,x=xx,y=yy)

在程序中,我不会修改精灵的x和y坐标,但是当我绘制它们时,无论我为xx和yy输入什么,它们总是被绘制在窗口的同一位置,除非我为yy做一个非常大的数字,在那种情况下,它会消失(我假设它在窗口外面)。

我让每个字母在屏幕上闪烁1秒钟,为此,这是我的on_draw方法

def on_draw():
    background.draw()

    if not key_manager.cur_letter == None:
        key_manager.cur_letter.draw()

(仅绘制key_manager.cur_letter,并且每秒切换一次。

python python-3.7 pyglet ondraw
1个回答
0
投票

该问题可能与旧版本有关。但是在调用super(Letter, self)...之后,您可以执行以下操作:

def __init__(self,im,iden,xx,yy):
    super(Letter,self).__init__(img=im,x=xx,y=yy)
    self.x = xx
    self.y = yy

这应该可以解决问题。

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