1

我想在我的项目中使用以下代码行。

   // 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]];

是否已弃用 setDelay 和 addFrameWithFilename?如果是,我应该用什么代替他们。请帮忙。

4

1 回答 1

1

嗯...不确定这些方法是否存在。这是我的代码库(cocos2 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;
于 2013-03-13T18:31:19.140 回答