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。