0

我目前的游戏有问题。我正在尝试根据其他身体的运动来移动精灵,以获得地图。这是我的代码:

    ...
    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 的情况下运行代码,游戏会运行但不刷新地图中的图标。有谁能够帮我???谢谢

4

2 回答 2

0

要避免此类操作,您可以简单地安排一些具有所需间隔的方法。喜欢

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

只是不要忘记稍后取消计划

于 2012-05-07T05:47:54.653 回答
0

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

另一种解决方案是CCRepeatForever为您的图标精灵制作相同的..并在其 CCCallFuncND 中占据其他对象的位置....

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

于 2012-05-05T19:08:43.727 回答