2013-03-13 4 views
1

Я хочу использовать следующие строки кода в моем проекте.предупреждения при использовании setDelay и addFrameWithFilename

// 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 setDelay:2.5f]; 
    for (int frameNumber=0; frameNumber < 8; frameNumber++) { 
     CCLOG(@"Adding image intro%d.png to the introAnimation.",frameNumber); 
     [introAnimation addFrameWithFilename: 
     [NSString stringWithFormat:@"intro%d.png",frameNumber]]; 

я получаю предупреждение:

instance method '-setDelay:' not found (return type defaults to 'id') 

указывая на линию

[introAnimation setDelay:2.5f]; 

и аналогичное предупреждение, указывающее на линию

[introAnimation addFrameWithFilename: [NSString stringWithFormat:@"intro%d.png",frameNumber]]; 

Has setDelay и addFrameWithFilename был осуждается? Если да, то что я должен использовать вместо них. Пожалуйста помоги.

+0

Посмотрите на CCAnimation.h файл. '/ ** Задержка в секундах« единицы задержки »*/ @property (nonatomic, readwrite) float delayPerUnit;' – Kreiri

ответ

1

hmmm ... не уверены, что эти методы существуют вообще. Вот пример из моей базы кода (cocos2 version 2.0).

+ (CCAnimation *) getAnimationForSoldier:(Soldier *)theSoldier animationType:(mapAnimationTypeE)animationType { 

    id animation = nil; 
    NSString *animationName = [SpriteUtils getAnimationNameForSoldier:theSoldier animationType:animationType]; 
    if (!animationName) return nil; 
    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:@"%@.plist", animationName]]; 

    if ((animation = [[CCAnimationCache sharedAnimationCache] animationByName:animationName])) { 
     return animation; 
    } else { 
     NSUInteger numberOfFrames = 8; 
     if (animationType == mapAnimationTypeCast || animationType == mapAnimationTypeSkill) numberOfFrames = 20; 
     NSMutableArray *frames = [NSMutableArray arrayWithCapacity:numberOfFrames]; 
     for (NSUInteger i = 1 ; i <= numberOfFrames ; i++) { 
      NSString *frName = [SpriteUtils getFrameNameForAnimationNamed:animationName andFrame:i]; 
      CCSpriteFrame *frr = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:frName]; 
      if (frr) { 
       [frames addObject:frr]; 
      } else { 
       MPLOGERROR(@"*** No frame named [%@], bailing out.", frName); 
       return nil; 
      } 
      [frames addObject:frr]; 
     } 

     animation = [CCAnimation animationWithSpriteFrames:frames delay:.06]; 
     [[CCAnimationCache sharedAnimationCache] addAnimation:animation name:animationName]; 

    } 

    return animation; 

} 

примечание: сначала создайте массив spriteframes, затем создайте анимацию с массивом и требуемую задержку.

Задержка - это задержка между каждым кадром (а не общей продолжительностью).

Если вы используете Cocos2D версии 2.N, сеттер для задержки

animation.delayPerUnit = 0.6f; 
Смежные вопросы