2013-02-24 2 views
1

Cocos2-x에서 약간의 경험을 쌓았지만 파이썬에서 원래의 cocos2d를 사용하여 프로토 타입을 개발하려고합니다.cocos2d에서 작업을 중지하는 방법은 무엇입니까?

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 방법에 그것을 중지하는 방법을 알고하지 않습니다 것은 내가 계층

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) 

에 스프라이트가 내가 이동할 수 있다는 것입니다. (적인 Cocos2D-X에서 나는 this->sprite->stopAction(action)을 할 수 있습니다.

를 또한 내가 이동하고 사용자 입력을 통해 스프라이트를 중지 할 수있는 더 좋은 방법합니다 (적인 Cocos2D 파이썬 방법)가 있는지 알고 싶습니다.

이미 문서를 읽기 그래서 일부 게임 샘플은,하지만 난 파이썬에 꽤 n00b 프로그래밍, 그래서 내 자신이이 알아낼 질수. 사전에

감사합니다.

답변

2

나는 파이썬적인 Cocos2D (전용적인 Cocos2D - 아이폰)을 사용한 적이 나는 일반적으로 이것을하는 더 좋은 방법이 있는지에 대한 귀하의 질문에 대답 할 수 없습니다. 그러나 당신이하는 일을하는 두 가지 방법이 있습니다. 귀하의 특정 상황에 따라 달라질 수 있습니다. 당신은 단순히 on_key_release()에 스프라이트에 모든 작업을 제거하려면

은 당신이 할 필요가 모든 작업을 제거합니다 스프라이트 객체에 호출 stop()입니다. 따라서 유일한 동작이 움직이는 애니메이션 인 경우 충분해야합니다.

데프 on_key_release (자체, 기호, 수식) : 경우 기호 == 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 
+0

감사합니다. 나는'.stop()'이 모든 액션을 멈추지 만, 하나만 멈추게하려면'.remove_action (action)'을 사용해야한다 :'self.sprite.remove_action (self.sprite_move_action)'. – Tae

+0

차갑고, 나는 그것을 반영하기 위해 내 대답을 업데이트 할 것이므로 누구에게나 유용 할 것입니다. 파이썬에 대한 cocos2d에 대한 경험이 없기 때문에 도움이 된 것을 기쁘게 생각합니다. – entropy

관련 문제