2012-12-15 1 views

답변

0

설명해 주시겠습니까? 액션을 이미 수행중인 스프라이트에 액션을 추가 할 수 있습니다. 나중에 액션을 실행하려는 경우 scheduleOnce를 사용할 수 있습니다. 이렇게하면 지정된 기간 후에 메소드를 실행할 수 있습니다.

+0

이미 액션을 실행중인 스프라이트에 액션을 추가하려고합니다. 즉 animateUp, animateDown을 추가 한 다음 애니메이션에 일시 중지없이 animateLeft를 추가합니다. – InkGolem

0

예, 가능합니다. CCSequence (시퀀스에서 실행되는 일련의 동작) 및 CCSpawn (시퀀스를 사용할 때 특히 유용한 새로운 동작 생성)을 살펴보십시오.

당신이해서는 안되는 유일한 일은 같은 종류의 두 가지 행동을 동시에 실행하는 것입니다. 예를 들어 하나 이상의 CCMove * 또는 CCTint * 작업. 이는 서로의 변경 사항을 덮어 쓰기 때문에 이상한 행동으로 이어질 수 있기 때문입니다.

+0

나는 이미 CCSequence와 CCSpawn을 사용하여 내 행동을 구축하고있다. 내가하고 싶은 것은 실행 중 액션 시퀀스에 추가 항목을 추가하는 것이다. – InkGolem

0

나는 진행 상황을 수정할 수 있다고 생각하지 않지만 'CCCallXYZ'동작을 추가하여 작업을 수행 할 수있는 클래스 메소드를 '원 샷'으로 예약 할 수 있습니다. 목적. 타이밍과 제어가 까다로울 수 있습니다.

+0

그게 내가 지금하고있는 일이며, 꽤 믿을 만해 보인다. :/ – InkGolem

+0

하하하 ... incredibad! 예, 방금 애니메이션을 포함하는 단순한 계층화 된 케이크 시퀀스를 수정하는 데 2 ​​일을 보냈습니다. 재미는 없습니다. – YvesLeBorg

0

아직 아이디어가 없습니다. CCSequence를 마지막 작업으로 빌드 할 때 CCCallBlock을 넣으면 블록 내에 런타임에 추가 한 작업을 추가로 얻을 수 있습니다. 나는 여기에 의사 코드를 쓰고있다. 조치로 블록 appendend는 것 같은 :

우리는 개체에 대한 추가 작업을 저장 한 경우
{ 
    CCSequence *additionalActions = [MyRuntimeActionClass getAdditionalActionsForObject:spriteRunningTheAction]; 
    if(additionalActions) 
      [spriteRunningTheAction runAction:additionalActions] 
} 

, 우리는 순서를 얻고 우리가 그것을 실행합니다. additionalActions는 실행할 객체의 주소 (spriteRunningTheAction)를 키와 함께 사전에 저장하고 추가 할 CCSequence 값을 계산할 수 있습니다.

+0

이 문제는 다른 동작이 끝날 때와 새로운 동작이 시작될 때 (약 1 프레임) 사이에 지연이 있다는 것입니다. – InkGolem