2013-06-13 2 views
1

Cocos2dx를 처음 사용하고 행성 애니메이션을 만들려고합니다. 3 개의 사각형이 포함 된 3 : 1 직사각형 텍스처를 사용하여 회전합니다. 구형의 두면 (지도)입니다 세 번째 사각형은 첫 번째 사각형의 복제품입니다.) 텍스처를 자르고 CCAnimation에 추가하여 프레임 배열을 만듭니다. 그런 다음 정사각형 프레임을 3D 원으로 만드는 두 가지 효과로이 애니메이션을 테스트합니다 : CCLens 및 CCTurnOffTiles (앞으로 원에서 바깥 쪽만 격자를 해제하기 위해 수정합니다).Cocos2dx에서 동시에 많은 효과 동작 실행

그러나 문제가 있습니다. 두 가지 효과가 겹치지 않습니다. CCTenser가 CCLens 뒤에 추가되면 CCLens는 작동하지 않습니다. CCTurnOffTiles 뒤에 CCLens가 추가되면 CCDirector는 런타임에 읽기 위반 예외를 발생시킵니다.

동시에 많은 효과를 적용하거나 다른 방식으로 행성 애니메이션을 구현하는 솔루션이 있습니까? 감사.

+0

두 개의 다른 애니메이션을 만드는 동안 다른 배열과 CCAnimation을 사용해야합니다. 별도의 runAction을 사용하여 동일한 스프라이트에 두 개의 다른 애니메이션을 동시에 사용할 수 있습니다. –

+0

@GaneshSomani 일반적으로 작동해야합니다. 그러나이 경우에는 CCLens와 CCTurnOffTiles가 함께 작동하지 않는 것으로 보입니다. – eee

답변

1

CCTurnOffTiles와 CCLens3D는 모두 CCGridAction을 상속합니다.

하나는 다른 하나를 취소합니다 : CCTurnOffTiles는 격자 타일을 해제하고 CCLens3d는 이러한 격자 타일을 필요로합니다.

CCTurnOffTiles 또는 CCLens3D를 사용하지 않고 이미 모든 동그라미 스프라이트를 그려서 SpriteSheet를 사용하고 CCAnimation을 사용하여 애니메이트하는 것이 좋습니다. 그것은 가장 쉽고 더 적은 CPU를 소비합니다.

+0

내 프로젝트에는 다양한 텍스처를 사용하는 많은 행성 객체가 있습니다. 모든 행성 스프라이트를 그리는 것은 많은 예술 작품을해야한다는 것을 의미합니다. 따라서이 솔루션 대신 다른 솔루션을 찾고 있습니다. 로드 타임에 CCFrame을 직접 수정하거나 애니메이션 동작 중에 원 안의 점만 보이게하는 마스크를 만드는 방법이 있습니까? – eee

+0

셰이더, GlScissor 또는 CCClippingNode를 사용하여 스프라이트를 마스크 할 수 있습니다. 이 링크를보십시오 : http://www.raywenderlich.com/4428/how-to-mask-a-sprite-with-cocos2d-2-0, http://www.cocos2d-iphone.org/forums/topic/how-to-set-a-spriteatlassprite-object /에 대한 설정 방법, http://stackoverflow.com/questions/3177751/cocos2d-iphone-sprite-cliping-mask-frame – Bivis

3

CCSpawn을 사용해보세요.

// Create the effects 
CCLens3D * lensEffect; // Your CCLens3D create() 
CCTurnOffTiles * turnOff; // Your CCTurnOfftiles create() 

// Create a spawn to run them simultaneously 
CCSpawn * sphereEffect = CCSpawn::createWithTwoActions(lensEffect, turnOff); 

// Run the spawn 
myObject -> runAction(sphereEffect); 
+0

나는 CCSpawn을 사용해 보았지만 runAction을 별도로 사용하는 것과 같은 오류가 발생했습니다. – eee