2013-05-07 4 views
0

Я пытаюсь блитирования несколько простых изображений, а также научиться использовать 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

Ну, во-первых, ваши отступы ошибочны.

Я также вижу ошибку в строке 4, которая является то, что ваш призыв к super() должно быть:

super(test, self).__init__() 

Это немного нелогичным, но первый аргумент должен быть именем этого класса , тот, который вы определяете.

В строке 5 вы загрузите изображение в переменную img, но в строке 6 вы также загрузить тот же образ от линии 5 во вторую переменную, переменную экземпляра с именем self.sprite. Эта переменная экземпляра больше не используется. Линия 6 - это отходы.

Чтобы ответить на ваш реальный вопрос: Я думаю, ваша ошибка в том, как вы пытаетесь определить свое событие on_draw. Вы перегружаете класс pyglet.window.Window и пытаетесь перегрузить событие on_draw непосредственно как метод, который не является тем, как он предназначен для работы. Создайте класс для хранения изображения и создайте декоратор в основном файле .py, который подталкивает событие рисования к окну.

import pyglet 

class Test(object): 
    def __init__(self): 
     super(Test, self).__init__() 
     img = pyglet.image.load('images/sprites.png') 
     // Removed prior self.sprite, as it was unneeded. 
     // Renamed instance variable below. 
     seq = pyglet.image.ImageGrid(img, 10, 9, 96, 96) 
     self.sprite = pyglet.image.TextureGrid(seq) 

// No indentation, so this is not in the test class. 
test = Test() 
window = pyglet.window.Window() 

@window.event 
def on_draw(): 
    // Don't forget to clear the window first! 
    test.clear() 
    test.sprite.blit(25, 25, width=150, height=150) 

if __name__ == '__main__': 
    pyglet.app.run() 

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

Смежные вопросы