0

나는 3 개의 이미지를 갖고 있으며, 하나씩 반복하고 싶습니다. 레이어가 왼쪽으로 이동하면 첫 번째 이미지는 더 이상 보이지 않으며이 이미지는 마지막 이미지 바로 다음에 새 위치를 가져 와서 첫 번째 이미지가 세 번째 이미지가되고 애니메이션이 반복됩니다.이미지가 반복되는 시간을 피하는 방법은 무엇입니까?

내 문제는 가끔이라는 작은 시간 경과가 있습니다. 첫 번째 이미지가 제거되어 세 번째 위치에 놓이면 발생한다고 생각합니다. 우리는 간신히 알아 차릴 수 있지만 일종의 0.1 초 동안 애니메이션을 "일시 중지"하고 있으며 이것을 피하고 싶습니다.

알고 계십니까? 나는이 코드 (이미지를 제거하고 다시 삽입)로 시도했거나 그냥 replace...atIndex으로 바꿈으로써 해결했지만 동일한 문제가있다. 코드는 다음과 같습니다.

if (offsetParam <= offset1-spriteWidth){ 
     CCSprite *temp = [[sprites objectAtIndex:0] retain]; 
     [sprites removeObjectAtIndex:0]; 
     [sprites addObject:temp]; 
     temp.position = ccp(-offset1+(2*spriteWidth), temp.position.y); 
     [temp release]; 

     offset1 -= spriteWidth; 
} 

아무 생각하세요?

감사


편집

: 카운터와 개체가 이동하지 않습니다? 은 (내가 함께 노력 가지고 내가 같은 결과를 가지고, 또는 그것없이하지만, 단지의 경우 "유지")

if (rightDirection){ 
    //RIGHT 
    CCLOG(@"offsetParam %f, offset1-spriteWidth %f", offsetParam, offset1-spriteWidth); 
    if (offsetParam < offset1-spriteWidth){ //move the block to the right 

     CCSprite *temp = [[grasses objectAtIndex:counterGrass] retain]; 
     counterGrass++; 
     if (counterGrass>2) counterGrass = 0; 
     temp.position = ccp(offset1+(2*spriteWidth), temp.position.y);//does not work 
     [temp release]; 
     offset1 -= spriteWidth; 
    } 

답변

1

유형의 CCArray 나있는 NSMutableArray의 "스프라이트"인가? 왜냐하면 CCArray는 removeObjectAtIndex에 심각한 성능 문제가 있기 때문에 특히 인덱스가 배열의 시작 부분에있는 경우와 같이 케이스에 있습니다.

NSMutableArray로 전환하여 도움이되는지 확인할 수 있습니다.

또는 불필요하므로 제거 및 추가를 사용하지 마십시오. 대신 어떤 배열 인덱스가 첫 번째 스프라이트인지 알려주는 인덱스 카운터를 사용하십시오. 인덱스가> = = 스프라이트 배열의 항목 수이면 0으로 재설정하십시오.

+0

@ LearnCocos2D : 저는 항상 궁금해합니다. CCArray는 어쨌든 유용합니다. 나는 그것을 결코 사용하지 않았다. (NSMutableArray 만) – Voldemort

+0

@ LearnCocos2D 덕분에 잘 작동 해 주셔서 감사합니다. – Paul