CCRepeatForever错误

时间:2012-05-05 18:03:41

标签: cocos2d-iphone sprite

我当前的游戏中遇到了问题。 我试图根据另一个物理体的运动移动一个精灵,用于地图。这是我的代码:

    ...
    NSMutableArray *mapObjetcs = [[[NSMutableArray alloc]init]autorelease];
    [mapObjetcs addObject:swordman];
    [mapObjetcs addObject:icon];

    CCCallFuncND* iconMap = [CCCallFuncND actionWithTarget:self selector:@selector(mapLoc:mapObj:) data:mapObjetcs];
    CCSequence* iconMapSequence = [CCSequence actions:[CCDelayTime actionWithDuration:1.0f/60.0f], iconMap, nil];;
    CCRepeatForever* iconRef = [CCRepeatForever actionWithAction:iconMapSequence];

    [self runAction:iconRef];
    }

    -(void) mapLoc:(ccTime)delta mapObj:(NSMutableArray*)mapObj
    {
    GB2Sprite *swordmanTemp = (GB2Sprite*)[mapObj objectAtIndex:0];
    CCSprite *iconTemp = (CCSprite*)[mapObj objectAtIndex:1];

    CGPoint swordmanPos = [swordmanTemp ccPosition];
    float pos = (swordmanPos.x/convFactor)+65;
    iconTemp.position = ccp(pos, 290);
}

每次我使用CCRepeatForever运行代码游戏都会冻结,如果我在没有CCRepeatForever的情况下运行代码游戏运行grat但不要刷新地图中的图标。 有谁能够帮我???感谢

2 个答案:

答案 0 :(得分:0)

在图层本身上运行CCRepeatForever会出现问题。当然它会冻结游戏..你可以尝试替代解决方案我猜...而不是使用单独的CCRepeatForever循环,使用你的图层的update方法..因为你已经做了同样的事情,你想用你自己的行动做..

另一个解决方案是为你的图标精灵制作相同的CCRepeatForever ..并在其CCCallFuncND中取得其他对象的位置......

希望这有帮助..尝试自己..如果它不起作用..我会尝试2给你代码...不要在你的图层本身运行CCRepeatForever循环.. :))

答案 1 :(得分:0)

要避免此类操作,您只需按需要的时间间隔安排某些方法即可。喜欢

[self schedule: @selector(methodToBeCalled) interval: intervalInSeconds];

请不要忘记以后取消安排