Нужна помощь по включению Preform Selector: WithObject: AfterDelay: с приостановкой SKScene

Мне нужна помощь в включении

PreformSelector: WithObject: AfterDelay:

Когда SKScene приостановлен. Я делаю игру, в которой есть кнопка паузы, которая приостанавливает сцену. Это, однако, не влияет на

PreformSelector: WithObject: AfterDelay:

функция, которая вызывает функцию «Перезагрузить». Без этого исправления пользователь может произвести выстрел, нажать паузу, дождаться вызова функции перезагрузки, отменить паузу и выстрелить. Это позволяет пользователю непрерывно стрелять без перезагрузки во время игры. Есть ли способ исправить это?


person ManOfPanda    schedule 18.08.2014    source источник
comment
возможный дубликат Spritekit — Создание таймера   -  person LearnCocos2D    schedule 18.08.2014


Ответы (1)


Вы не должны использовать performSelector:withObject:afterDelay:, потому что отслеживание времени и сохранение селекторов, объектов и т. д. с помощью этого метода было бы очень громоздким.

Вместо этого используйте действие +[SKAction waitForDuration:] SpriteKit.

Вы хотели бы сделать что-то вроде следующего (я предполагаю, что этот код находится где-то в одном из методов вашей сцены):

// Replace 2.0 below with however long you want to wait, in seconds
SKAction *waitAction = [SKAction waitForDuration:2.0];

// I'm assuming your "Reload" method is a method declared in your scene's
// class and not some other class, so I'm using "self" as the target here.
SKAction *reloadAction = [SKAction performSelector:@selector(Reload) onTarget:self];

SKAction *sequenceAction = [SKAction sequence:@[waitAction, reloadAction]];

// Since I'm assuming this is in your scene implementation, `self` here
// refers to your scene node.
[self runAction:sequenceAction];

Поскольку действия можно приостанавливать и возобновлять, когда вы приостанавливаете сцену с помощью self.paused = YES;, ваши действия также будут приостановлены и возобновятся с того места, на котором они остановились, когда вы позже снимете паузу со сцены.

person Tyler    schedule 18.08.2014