2012-09-25 35 views
6

Tôi hiện đang học cocos2D-x và đang thực hiện một số hoạt ảnh giả.
Mục tiêu của tôi là khi một nút được nhấp, đối tượng chuyển sang trái với một số hoạt ảnh. Bây giờ nếu bạn nhấp nhiều lần nhanh chóng, hoạt ảnh diễn ra ngay lập tức và có vẻ như con gấu đang hy vọng thay vì đi bộ.Kiểm tra Nếu hoạt ảnh đang chạy trong cocos2d-x

Giải pháp đơn giản là tôi nên kiểm tra xem hoạt ảnh có đang chạy hay không và nếu không chạy hoạt ảnh mới sẽ không diễn ra.

Sau đây là một phần của mã của tôi.

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("AnimBear.plist"); 
CCSpriteBatchNode* spriteBatchNode = CCSpriteBatchNode::create("AnimBear.png", 8); 

this->addChild(spriteBatchNode,10); 
     CCArray *tempArray = new CCArray(); 
char buffer[15]; 
for (int i = 1; i <= 8 ; i++) 
    { 
sprintf(buffer,"bear%i.png", i); 
tempArray->addObject(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(buffer));  
} 

CCAnimation *bearWalkingAnimation = CCAnimation::create(tempArray,0.1f); 
startAnimation = CCSprite::createWithSpriteFrameName("bear1.png"); 
startAnimation->setPosition(ccp (350 , CCDirector::sharedDirector()->getWinSize().height/2 -100)); 
startAnimation->setScale(0.5f); 

startAnimation->setTag(5); 

//Animation for bear walking  

bearAnimate = CCAnimate::create(bearWalkingAnimation); 

Đây bearAnimate là biến toàn cục và tôi muốn biết liệu hiện tại có đang phát hoạt ảnh hay không.

Làm cách nào để thực hiện.?
Cảm ơn bạn.

Trả lời

13

Giả Sprite chạy hành động là

CCSprite* bear; 

Tôi nghĩ rằng bạn có thể sử dụng một cái gì đó giống như

bear->numberOfRunningActions() 

numberOfRunningActions() trả về một số nguyên unsigned, vì vậy để kiểm tra nếu không có hành động, bạn sẽ phải kiểm tra xem nó có trả về 0

if (bear -> numberOfRunningActions() == 0) { 
    CCLOG("No actions running."); 
} else { 
    CCLOG("Actions running."); 
} 
+0

@LanceGray: Cảm ơn bạn đời! –

+0

Bạn có biết nó như thế nào trong cocos2d thông thường không? – RollRoll

+1

@ ThePoet Tôi cho rằng chức năng này giống nhau không? –

1

BearAnimate (CCAnimate) có một phương pháp để kiểm tra điều đó.

if (bearAnimate.isDone()) 
    doWhatYouWant(); 

Phương pháp được kế thừa từ CCAction. Chúc may mắn.

Các vấn đề liên quan