1

私はCocos2-xでの作業経験がありますが、現在Pythonで元のcocos2dを使用してプロトタイプを開発しようとしていますが、かなり異なっていることがわかりました。事は私が層にスプライトを持っているということです

class TestLayer(cocos.layer.Layer):
    is_event_handler = True

    def __init__(self):
        super(TestLayer, self).__init__()
        self.sprite = cocos.sprite.Sprite('grossini.png')
        self.sprite.position = 320, 340
        self.add(sprite)

そして私はそれを動かすことができます:

def on_key_press(self, symbol, modifiers):
    if symbol ==key.RIGHT:
    move = MoveBy((1, 0), 0.1)
    repeat = Repeat(move)
    self.sprite.do(repeat)

しかし、メソッドでそれを停止する方法がわかりませんon_key_release。(Cocos2d-xではできthis->sprite->stopAction(action)ました。

また、ユーザー入力を介してスプライトを移動および停止するためのより良い方法(cocos2d Pythonの方法)があるかどうかを知りたいです。

私はすでにドキュメントといくつかのゲームサンプルを読んでいますが、私はPythonでかなりn00bプログラミングをしているので、これを自分で理解することはできません。

前もって感謝します。

4

1 に答える 1

2

私はPythonにcocos2dを使用したことがないので(cocos2d-iphoneのみ)、一般的にこれを行うためのより良い方法があるかどうかについてあなたの質問に答えることはできません。しかし、あなたの特定の状況に応じて、あなたが求めていることを行うには2つの方法があります。

スプライト上のすべてのアクションを削除したいだけの場合は、すべてのアクションを削除するスプライトオブジェクトをon_key_release()呼び出すだけです。stop()したがって、唯一のアクションが動くアニメーションである場合は、これで十分です。

def on_key_release(self、symbol、modifiers):if symbol == key.RIGHT:self.sprite.stop()

ただし、スプライトでの特定のアクションのみを停止し、他のアクションを実行し続けたい場合。次に、アクションをどこかに保存してからstop()、スプライトではなくアクションを呼び出す必要があります。例はこれである可能性があります:

def __init__(self):
    super(TestLayer, self).__init__()
    self.sprite = cocos.sprite.Sprite('grossini.png')
    self.sprite.position = 320, 340
    self.add(sprite)
    self.sprite_move_action = None

def on_key_press(self, symbol, modifiers):
    if symbol ==key.RIGHT:
        move = MoveBy((1, 0), 0.1)
        repeat = Repeat(move)
        self.sprite_move_action = repeat
        self.sprite.do(repeat)

def on_key_release(self, symbol, modifiers):
    if symbol == key.RIGHT and self.sprite_move_action is not None:
        self.sprite.remove_action(self.sprite_move_action)
        self.sprite_move_action = None
于 2013-02-24T23:54:02.613 に答える