0

我创建了一个 CCAnimation,如下所示。我尝试将延迟降低到 0.05f 以下,但动画现在无法完成!它只有 8 帧。我不知道我是否做错了什么。起初我认为这是内存泄漏,我正在丢失操作,所以我将它分配给一个强大的属性来测试它,并且仍然这样做了。我不确定延迟如何导致我的动画无法完成。我在模拟器中以每秒 60 帧的速度运行。

使用狗头人 2.0.4

任何人都可以帮忙吗?

else if([model currentState] == PROCESSING_FIRST_ACTION)
        {
            CCDirector* director = [CCDirector sharedDirector];    // process model
            //Get the top left corner of the screen
            int screen_height = director.screenSizeAsPoint.y;
            int screen_width = director.screenSizeAsPoint.x;

            id attacker = [model attacker];
            id attackChoice = [attacker getRegisteredAttack];

            CCAction* attack = [model.resourceManager animation: @"simple-attack-frame"];
            CCSprite * attackSprite = [model.resourceManager sprite: @"simple-attack-frame-01"];

            attackSprite.position = ccp(screen_width - rxa(80), screen_height - rya(80));
            attackSprite.tag = 5;
            self.action = attack;

            CCNode * check = [self getChildByTag:5];

            if(check == nil)
            {
                [self addChild: attackSprite];
                [attackSprite runAction:attack];
            }
        }

resource manager:

-(id)animation: (NSString*)_resource
{
    NSMutableArray *frames = [NSMutableArray array];

    for(int i = 1; i <= 8; ++i)
    {
        [frames addObject:
         [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:
          [NSString stringWithFormat:@"%@-0%d", _resource, i]]];
    }

    CCAnimation *animation = [CCAnimation animationWithSpriteFrames: frames delay:1/60];

    CCAction * action = [CCAnimate actionWithAnimation: animation];

    return action;

}
4

2 回答 2

1

在你的行

CCAnimation *animation = [CCAnimation animationWithSpriteFrames: frames delay:1/60];

您将延迟设置为 1/60,但由于 1 和 60 都是整数,因此 1/60 为 0。尝试使用 1.0f/60.0f,您将得到一个浮点除法。

于 2012-10-22T08:18:11.597 回答
0

在网上搜索后,我找到了解决方案。我不是提交此解决方案的人,但我可以证明它解决了我的问题:

https://github.com/cocos2d/cocos2d-iphone/commit/60f9cc98783b9a6a5635db4f468f83e0511c74c8

于 2012-10-21T22:27:25.577 回答