ios - 当 Sprite 到达该位置时代码崩溃

标签 ios cocos2d-iphone ccsprite

我使用下面的代码来随机显示云

- (void) cloudFly
{
  int whichcloud = (arc4random() % 2) + 1;
  CCSprite *target = [CCSprite spriteWithImageNamed:[NSString stringWithFormat:@"cloud%d.png",whichcloud]];
  target.opacity = 0.3;

int minY = target.contentSize.height / 2;
int maxY = winSize.height - target.contentSize.height / 2;
int rangeY = maxY - minY;
int actualY = (arc4random() % rangeY) + minY;

target.position = ccp(winSize.width + (target.contentSize.width/2), actualY);
[self addChild:target];

int minDuration = 1.0;
int maxDuration = 3.0;
int rangeDuration = maxDuration - minDuration;
int actualDuration = (arc4random() % rangeDuration) + minDuration;

// Create the actions
id actionMove = [CCActionMoveTo actionWithDuration:actualDuration position:ccp(-target.contentSize.width / 2, actualY)];
id actionMoveDone = [CCActionCallFunc actionWithTarget:self selector:@selector(cloudFinished:)];
[target runAction:[CCActionSequence actions:actionMove, actionMoveDone, nil]];
[_clouds addObject:target];
}

- (void)cloudFinished:(id)sender
{
  CCSprite *sprite = (CCSprite *)sender;
  [sprite stopAllActions];
  [self removeChild:sprite cleanup:YES];
}

但是当云飞到那个位置的时候,这段代码会在一行崩溃

- (void)cloudFinished:(id)sender

我用的是cocos2d-iphone v3.x,我尝试注释/删除所有代码

- (void)cloudFinished:(id)sender

但它仍然崩溃。 BWT,ccsprite 是否移除标签?

最佳答案

CCActionCallFunc 需要一个没有参数的选择器,您应该改用 CCActionCallBlock。 this answer 中有一个示例.

关于ios - 当 Sprite 到达该位置时代码崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23004680/

相关文章:

objective-c - Objective C 中是否有内置的排序函数?

ios - 无法将类型 'MapViewController' 的值分配给类型 'UberController?'

ios - 将 UI 元素设置为单例是不好的做法吗?

cocos2d-iphone - cocos2d : why convertToGL, 为什么在它的 body 之前 addChild CCSprite?

android - Cocos2D android背景图片搞砸了

iphone - 由于从 NSMutableArray 中删除 CCSprite 等元素而导致崩溃

iphone - 自定义 View Controller 委托(delegate)不起作用

ios - Facebook iOS SDK 的 openActiveSession 后访问 token 过期

iphone - Cocos2d。六边形 map 示例

iphone - 我希望我的cocos2d游戏的背景是iPhone相机的 View 。我怎么做?