Cocos2d iphone 重复错误

Cocos2d iphone 重复错误,cocos2d-iphone,sprite,Cocos2d Iphone,Sprite,我现在的游戏有问题。 我正在尝试根据另一个物理体的运动来移动一个精灵,作为一张地图。这是我的代码: ... NSMutableArray *mapObjetcs = [[[NSMutableArray alloc]init]autorelease]; [mapObjetcs addObject:swordman]; [mapObjetcs addObject:icon]; CCCallFuncND* iconMap = [CCCallFuncND act

我现在的游戏有问题。 我正在尝试根据另一个物理体的运动来移动一个精灵,作为一张地图。这是我的代码:

    ...
    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,但不会刷新地图中的图标。
有人能帮我吗???谢谢

在图层上运行CCRepeatForever是个问题。。当然,它会冻结游戏。。我想你可以试试其他的解决办法。。使用图层的更新方法,而不是使用单独的CCRepeatForever循环。。因为它已经在做你想用自己的行动做的事情

另一个解决方案是为您的图标精灵制作相同的CCRepeatForever。。在它的CCCallFunc中,取另一个对象的位置


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

为了避免此类操作,您可以简单地安排一些具有所需时间间隔的方法。类smth

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

只是别忘了以后取消计划

您正面临的问题是什么?抱歉,我忘了描述错误,现在我描述了上面的错误,但是,每次我用CCRepeatForever运行代码时,游戏冻结,如果我不使用CCRepeatForever运行游戏,游戏将运行,但地图中的图标不会刷新。谢谢您的帮助,a使用全局变量存储敌人的位置来修复问题。你能解释一下如何使用层更新方法来完成我想要的吗?-无效更新:ccTimedt{,,,}这个方法调用自己。。只要实施它。。别忘了添加OneNet方法。。。阅读此链接我知道如何使用此方法,但我不知道如何使用计划传递一个或多个参数,这可能吗???您不能将数据作为参数发送。。更好的解决方案是保留数组的实例变量,而不是局部变量。。在代码中的其他位置,您可能需要相同的数组。。不能通过将变量从一个函数传递到另一个函数来完成所有工作: