Coco2d задержка анимации в первый раз - PullRequest
0 голосов
/ 16 февраля 2012

В coco2d - Когда у меня есть анимация в первый раз, когда есть небольшая задержка, но анимация во второй раз, она будет работать отлично (без задержки), Как решить эту проблему

мой код ниже

- (void) animateImages: (NSString ) animationName startImageName: (NSString ) sImage IndividualImageName: (NSString *) imgName withDelay: (CGFloat) задержка startFrame: (NSInteger) sFrame endF) eFrame {isAnimating = YES;

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:@"%@.plist",animationName]];        

CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:[NSString stringWithFormat:@"%@.png",animationName]];

[self addChild:spriteSheet z:0];

// Load up the frames of our animation
NSMutableArray *walkAnimFrames = [NSMutableArray array];
for(int i = sFrame; i <= eFrame; i=i+2) {
    [walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"%@ %d.jpg",imgName,i]]];//@"stand march %d.jpg"
}


NSLog(@"After NSMutableArray");


CCAnimation *walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:delay];

CCAction *standByAtion =[CCSequence actions:                          
                         [CCRepeat actionWithAction:[CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO] times:1],[CCCallFunc actionWithTarget:self selector:@selector(setAnimatingToFalseAfterAnimation:)],nil];


 [walkAnimFrames removeAllObjects];
 walkAnimFrames=nil;

CGSize winSize = [[CCDirector sharedDirector] winSize];
CCSprite *images = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@"%@",sImage]];//@"stand march 101.jpg"

images.position=ccp(winSize.width/2,winSize.height/2);
images.scaleX=1.6;
images.scaleY=1.59;

[spriteSheet addChild:images];
[images runAction:standByAtion];

NSString *audioName=[NSString stringWithFormat:@"Jump.caf"];
[self playSoundEffectNamed:audioName];

}

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 16 февраля 2012

Задержка при первом вызове из-за загрузки изображений.

При первом вызове это действительно загружает изображения. Это медленно. Во второй раз он не загружает их с диска, а читает уже загруженные изображения из кэша. Это быстро. Решение: Загрузите все изображения для анимации один раз, прежде чем вызывать это.

0 голосов
/ 16 февраля 2012

Если я правильно понял, вам нужно установить различную задержку между кадрами в одной анимации.Если вы хотите, когда вам нужно просто повторить кадры 2 или более раз.Например: у вас есть анимация с 3 кадрами: первый должен показываться в течение 1 секунды, второй - в течение 2 секунд, а третий - в течение 0,5 секунды.Для этого сделайте анимацию с задержкой 0,5 секунды, добавьте туда ДВА 1-го кадра, ЧЕТЫРЕ 2-го кадра и ОДИН 3-й кадр.надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...