我当前的游戏中遇到了问题。 我试图根据另一个物理体的运动移动一个精灵,用于地图。这是我的代码:
...
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但不要刷新地图中的图标。 有谁能够帮我???感谢
答案 0 :(得分:0)
在图层本身上运行CCRepeatForever
会出现问题。当然它会冻结游戏..你可以尝试替代解决方案我猜...而不是使用单独的CCRepeatForever
循环,使用你的图层的update
方法..因为你已经做了同样的事情,你想用你自己的行动做..
另一个解决方案是为你的图标精灵制作相同的CCRepeatForever
..并在其CCCallFuncND中取得其他对象的位置......
希望这有帮助..尝试自己..如果它不起作用..我会尝试2给你代码...不要在你的图层本身运行CCRepeatForever循环.. :))
答案 1 :(得分:0)
要避免此类操作,您只需按需要的时间间隔安排某些方法即可。喜欢
[self schedule: @selector(methodToBeCalled) interval: intervalInSeconds];
请不要忘记以后取消安排