我试图blit一些简单的图像,并学习使用ImageGrid和其他函数,但同样的错误不断出现:
File "C:\Python27\lib\site-packages\pyglet\gl\lib.py", line 105, in errcheck
raise GLException(msg)
GLException: None
这是我的代码:
import pyglet
class test(pyglet.window.Window):
def __init__(self):
super(game, self).__init__()
img = pyglet.image.load('images/sprites.png')
self.sprite = pyglet.resource.image('images/sprites.png')
seq = pyglet.image.ImageGrid(img, 10, 9, 96, 96)
self.sprite2 = pyglet.image.TextureGrid(seq)
def on_draw(self):
self.sprite2.blit(25, 25, width=150, height=150)
答案 0 :(得分:0)
好吧,首先,你的缩进是错误的。
我还在第4行看到错误,即您对super()
的调用应为:
super(test, self).__init__()
这有点违反直觉,但第一个参数应该是这个类的名称,即你定义的那个。
在第5行中,您将图像加载到变量img
中,但在第6行中,您还将第5行中的相同图像加载到第二个变量,即名为{{的实例变量1}}。此实例变量从未再次使用。 6号线是一种浪费。
要回答您的实际问题:我认为您的错误在于您是如何定义self.sprite
事件的。你正在重载pyglet.window.Window类并尝试直接重载on_draw
事件作为一种方法,而不是它的工作方式。创建一个类来保存您的图像,并在主.py文件中创建一个装饰器,将绘制事件推送到窗口。
on_draw
试试吧。但是,你的图像可能看起来有点奇怪,因为你的blit调用正在改变定位点并在两个方向上拉伸图像。