2013-04-07 49 views
1

下面在我的代碼的delayperunit屬性保持在屏幕上子畫面2.5秒它改變之前。我真正想要做的是顯示0.5秒的精靈,以便有2.0第二個破(不顯示動畫)下一個出現另0.5秒,等等之前。我怎樣才能做到這一點?設定子畫面顯示持續

// Create the intro image 
CGSize screenSize = [CCDirector sharedDirector].winSize; 
CCSprite *introImage = [CCSprite spriteWithFile:@"intro1.png"]; 
[introImage setPosition:ccp(screenSize.width/2, screenSize.height/2)]; 
[self addChild:introImage]; 

// Create the intro animation, and load it from intro1 to intro7.png 
CCAnimation *introAnimation = [CCAnimation animation]; 
[introAnimation delayPerUnit:2.5f]; 
for (int frameNumber=0; frameNumber < 8; frameNumber++) { 
    CCLOG(@"Adding image intro%d.png to the introAnimation.",frameNumber); 
    [introAnimation addSpriteFrameWithFilename: 
    [NSString stringWithFormat:@"intro%d.png",frameNumber]]; 
} 

回答

0

考慮具有由CCAnimation(具有每單位0.2延遲)的CCSequence構成的動作,並在動畫之間加0.5秒的一個CCDelayTime。然後永遠重複這個動作。此外,使用CCAnimationCache如果你正在使用的Cocos2D 2.X起來存儲您的動畫。

1

我不認爲你可以做到這一點與CCAnimation。你既可以嵌入在一個類(如果這將是一個反覆出現的主題),或做你這個模塊中顯示這些幀:

在.H

,一些高德;

NSUInteger _currentFrame; 
    NSUInteger _maxFrames; 

在.M,你就可以開始在那裏:

_currentFrame=1; 
_maxFrames = 8; 
[self scheduleOnce:@selector(flashFrame) delay:0.]; 

-(void) flashFrame: { 

    NSString *spriteName = [NSString stringWithFormat:@"intro%d.png",_currentFrame]; 
    CCSprite *sprite = [CCSprite spriteWithFile:spriteName]; 
    CGSize screenSize = [CCDirector sharedDirector].winSize; 
    sprite.position=ccp(screenSize.width/2, screenSize.height/2); 
    id wait = [CCDelayTime actionWithDuration:.5]; 
    id clean = [CCCallBlock actionWithBlock:^{ 
     [sprite removeFromParentAndCleanup:YES]; 

     }]; 
    id seq = [CCSequence actions:wait,clean,nil]; 
    [self addChild sprite]; 
    [sprite runAction:seq]; 
    if(_currentFrame < maxFrame) { 
     _currentFrame++; 
     [self scheduleOnce:@selector(flashFrame) delay:2.0]; 
    } else { 
     // do whatever you wanted to do after this sequence. 
    } 

} 

標準免責聲明:沒有測試過,從記憶的編碼,里程會有所不同:)