Cocos2d iphone 设置无限随机移动

Cocos2d iphone 设置无限随机移动,cocos2d-iphone,Cocos2d Iphone,只是一个简单的问题——设置精灵无限运动序列的最有效方法是什么?我目前正在运行以下命令: -(void) pathToMove:(CCParticleSystemQuad*) system { CGSize screenSize = [[CCDirector sharedDirector] winSize]; int width = screenSize.width; int height = screenSize.height; float randX = arc

只是一个简单的问题——设置精灵无限运动序列的最有效方法是什么?我目前正在运行以下命令:

-(void) pathToMove:(CCParticleSystemQuad*) system
{
    CGSize screenSize = [[CCDirector sharedDirector] winSize];
    int width = screenSize.width;
    int height = screenSize.height;
    float randX = arc4random() % width;
    float randY = arc4random() % (height - 200);

    CGPoint start = system.position;
    CGPoint end = ccp(randX, randY);

    float finalDistance = ccpDistance(start, end);
    float speedToMove = 500.0;

    float durationToMove = finalDistance / speedToMove;

    [system runAction:[CCSequence actions:[CCMoveTo actionWithDuration:durationToMove position:ccp(randX,randY)],[CCCallFuncN actionWithTarget:self selector:@selector(completedCurve:)],nil]];

}
-(void) completedCurve:(id) sender
{
    [self pathToMove:sender];   
}

但我担心,这可能会导致一些奇怪的僵尸和/或泄漏的动作调用自己一遍又一遍。有更好的办法吗?

应该可以。旧操作将自行释放,新操作将计划运行。在这段代码中,您两次创建端点。您还可以使用CGPointMake和ccp,它们都做相同的事情。为了保持一致性,为什么不在所有情况下都坚持使用ccp。自从发布以来,我做了一些挖掘。似乎CCCallFunc对ARC不安全,您应该改为使用CCCallBlocks。我还不知道为什么会这样。1)使用弧2)使用块3)不要假设,确认。Callfunc的主要问题是CCCallFuncND中的void*数据参数。另一个调用func可以很好地处理ARC。