По сути, у меня есть функция создания сущности, которая теоретически должна создавать на экране случайный воздушный шар с определенными свойствами. Я разработал метод как таковой:
-(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];
}
И этот метод работает. Когда я вызываю его в функции инициализации, он работает. Когда я вызываю его в функции touchesMoved(), он работает. Однако, когда я пытаюсь вызвать его в методе инициализации с
[self runAction:[SKAction repeatActionForever:[SKAction performSelector:@selector(spawnBalloon) onTarget:self]]];
Это терпит неудачу. Почему это? Должен ли я просто использовать функцию PerformSelector из «я», а затем использовать NSTimer, чтобы она повторялась вечно?
Кроме того, я попытался добавить NSLog в код, чтобы увидеть, выполнялся ли он вообще, когда он был в действии повтора, и это так. Единственная проблема в том, что воздушный шар не добавляется на экран. Мне кажется, что когда я вызываю функцию spawnBalloon через repeatActionForever, self ссылается на другой класс? Извините, если это сбивает с толку, я все еще новичок в Objective C и SpriteKit, и вместо того, чтобы много читать, я погрузился и решил учиться, когда это необходимо (однако у меня есть обширные знания Java/C)
РЕДАКТИРОВАТЬ: я понял, что если у меня нет действия repeatForever, код будет выполняться и работать. Однако, если он есть, он не работает.