Python Pyglet/Cocos2d,显示窗口,但sprite不显示';产卵

Python Pyglet/Cocos2d,显示窗口,但sprite不显示';产卵,python,pyglet,Python,Pyglet,我试图创建一个精灵类和一个键句柄来移动精灵,但它似乎不起作用。执行时,窗口将显示,但sprite不会显示。怎么了 import pyglet import cocos from pyglet.window import key window = pyglet.window.Window() keyboard = key.KeyStateHandler() class Player(cocos.layer.Layer): def __init__(self): super(Pla

我试图创建一个精灵类和一个键句柄来移动精灵,但它似乎不起作用。执行时,窗口将显示,但sprite不会显示。怎么了

import pyglet
import cocos
from pyglet.window import key

window = pyglet.window.Window()
keyboard = key.KeyStateHandler()

class Player(cocos.layer.Layer):

  def __init__(self):
    super(Player, self).__init__()

    img = pyglet.image.load('../game/resources/sprite_1.png')
    self.sprite = pyglet.sprite.Sprite(img)

  def animate(dt, velocity, sprite):
    sprite.position += dt * velocity

  def on_key_press(self, symbol, keyboard, modifiers):
    if symbol == key.RIGHT:
        self.img.x += dt * 10
    elif symbol == key.LEFT:
        self.img.x -= dt * 10
    elif symbol == key.UP:
        self.img.y += dt * 10
    elif symbol == key.DOWN:
        self.img.y -= dt * 10



  def on_key_release(self, smybol, keyboard, modifiers):
    if symbol == key.RIGHT:
        self.sprite.x = dt * 0
    elif symbol == key.LEFT:
        self.sprite.x = dt * 0
    elif symbol == key.DOWN:
        self.sprite.y = dt * 0
    elif symbol == key.UP:
        self.sprite.y = dt * 0


pyglet.gl.glEnable(pyglet.gl.GL_BLEND)
pyglet.gl.glBlendFunc(pyglet.gl.GL_SRC_ALPHA, pyglet.gl.GL_ONE_MINUS_SRC_ALPHA)

pyglet.app.run()

您的代码中存在许多问题,这些问题阻碍了任何事情的发生:

  • 您正在pyglet中创建cocos2d实体,而不告诉pyglet如何处理它。您最好使用cocos2d来创建窗口等

  • 您正在创建一个pyglet
    Sprite
    ,而您可能应该使用cocos2d,并且您没有将它附加到

  • animate
    不是
    的API的一部分(即使是,也可能不是静态方法)

  • 您还没有将
    Player
    定义为事件处理程序,因此按下
    键就不会执行任何操作

  • 您在按键时向
    中传递的参数多于所需的参数,并且引用了
    dt
    ,而没有传递它

  • 下面是示例代码的修改版本,它将帮助您继续前进:

    import cocos
    import pyglet
    from pyglet.window import key
    
    keyboard = key.KeyStateHandler()
    
    class Player(cocos.layer.Layer):
        is_event_handler = True
    
        def __init__(self):
            super(Player, self).__init__()
            img = pyglet.image.load('../game/resources/sprite_1.png')
            self.sprite = cocos.sprite.Sprite(img)
            self.add(self.sprite)
    
        def on_key_press(self, symbol, modifiers):
            print 'pressing'
            if symbol == key.RIGHT:
                self.sprite.x += 10
            elif symbol == key.LEFT:
                self.sprite.x -= 10
            elif symbol == key.UP:
                self.sprite.y += 10
            elif symbol == key.DOWN:
                self.sprite.y -= 10
    
    if __name__ == '__main__':
        cocos.director.director.init()
    
        player = Player()
        main_scene = cocos.scene.Scene( player )
    
        cocos.director.director.run( main_scene )