基本上我有一个生成实体函数,理论上应该在屏幕上生成一个具有某些属性的随机气球。我设计了这样的方法:
-(void)spawnBalloon
{
int a = arc4random_uniform(self.frame.size.width);
int b = self.frame.size.height - 50;
CGPoint loc = CGPointMake(a, b);
[self spawnBalloonAtPoint:loc];
}
这种方法有效。当我在 init 函数中调用它时,它可以工作。当我在 touchesMoved() 函数中调用它时,它可以工作。但是,当我尝试在 init 方法中调用它时
[self runAction:[SKAction repeatActionForever:[SKAction performSelector:@selector(spawnBalloon) onTarget:self]]];
它失败。为什么是这样?我是否必须只使用“self”中的 performSelector 函数,然后使用 NSTimer 让它永远重复?
另外,我尝试将 NSLog 放入代码中,以查看它是否在重复操作中被执行,并且确实如此。唯一的问题是气球没有被添加到屏幕上。我的感觉是,当我通过repeatActionForever调用spawnBalloon函数时,self指的是不同的类?抱歉,如果这令人困惑,我对 Objective C 和 SpriteKit 还很陌生,我没有真正阅读大量内容,而是决定在需要时学习(但是我对 Java/C 有广泛的了解)
编辑:我发现如果我没有 repeatForever 操作,代码将执行并工作。但是,如果它在那里,它就不起作用。