Cocos2d iphone 具有低延迟的cAnimation不';完不成

Cocos2d iphone 具有低延迟的cAnimation不';完不成,cocos2d-iphone,kobold2d,Cocos2d Iphone,Kobold2d,我创建了一个动画,如下所示。我尝试将延迟降低到0.05f以下,但动画现在无法完成!它只有8帧。我不知道我是否做错了什么。起初我认为这是一个内存泄漏,我正在丢失操作,所以我将它指定给一个强属性来测试它,并且仍然这样做。我不确定延迟怎么会导致我的动画无法完成。我在模拟器中以每秒60帧的速度运行 使用Kobold 2.0.4 有人能帮忙吗 else if([model currentState] == PROCESSING_FIRST_ACTION) { CCD

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

使用Kobold 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;

}
else if([model currentState]==处理第一个动作)
{
CCDirector*director=[CCDirector sharedDirector];//流程模型
//获取屏幕的左上角
int screen_height=director.screensizeasepoint.y;
int screen_width=director.screenSizeAsPoint.x;
id攻击者=[模型攻击者];
id attackChoice=[攻击者GetRegisteredatack];
CCAction*攻击=[model.resourceManager动画:@“简单攻击帧”];
CCSprite*attackSprite=[model.resourceManager精灵:@“simple-attack-frame-01”];
attackSprite.position=ccp(屏幕宽度-rxa(80),屏幕高度-rya(80));
attackSprite.tag=5;
自我行动=攻击;
CCNode*check=[self-getChildByTag:5];
如果(检查==nil)
{
[self-addChild:attackSprite];
[攻击精灵运行动作:攻击];
}
}
资源管理器:
-(id)动画:(NSString*)\u资源
{
NSMutableArray*帧=[NSMutableArray];

对于(int i=1;i在网上搜索后,我找到了一个解决方案。我不是提交此解决方案的人,但我可以证明它解决了我的问题:

在你的队伍中

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

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

我看到过类似的问题,但在cocos2d v1.1中。他们更改了动画系统中的某些内容,我不太理解代码,对我来说似乎有问题。结果是计时关闭,并且有时,动画根本不起作用。我不知道这一更改是否已集成到2.0中。您可能希望尝试在香草CoCoCos2D 2.0项目中重新创建场景,然后提交错误报告。哦,这不好。我的意思是,如果我无法在游戏中使用动画,那将是一个破坏游戏的错误=(.由于经过的时间大于持续时间,ActionManager正在停止动画。(isDone).我会更深入地研究它,但我认为最简单的解决方案是只在显示最后一帧后将isDone重载为true。没错,我注意到,在to之后不久…它确实起作用,除非帧速率下降,然后相同的问题随着动画未完成而再次出现。