addChild在预定方法中

时间:2012-12-20 09:33:16

标签: objective-c ios cocos2d-iphone

我是Cocos2d的初学者,我遇到了一个似乎我无法自己解决的问题。我的问题是,如果我在预定方法中添加CCSprite,添加图像的背景将是不透明的(黑色),即使原点是透明PNG。但是代码更好地解释了我正在尝试做什么,所以

- (void) openShutters 
{
  NSInteger randomTime = (arc4random() % 3) + 2;
  [self schedule:@selector(openShutter) interval:0 repeat:1 delay:randomTime];
}

- (void) openShutter 
{
  NSInteger randomShutter = (arc4random() % [shutters count]);

  CCSprite *soldier = [CCSprite spriteWithFile:@"soldier.png"];
  soldier.anchorPoint = CGPointMake(0, 1);
  soldier.position = ccp(0, winSize.height);
  [self addChild:soldier];

  [self unschedule:@selector(openShutter)];
  [self openShutters];
}

这里的奇怪问题是,如果我在CCSprite *soldier = [CCSprite ...方法中移动openShutters,精灵将根据需要显示透明背景。这是cocos-2d中的一个错误,我的代码中有一个错误,或者从预定方法中添加新的子进程是不安全的?

1 个答案:

答案 0 :(得分:2)

在openShutters方法中,您指定interval = 0此语句在设置大于零的间隔值后创建问题