Как проверить, запущен ли конкретный SKAction с ключом

У меня есть SKAction, который запускается withKey:"running". У меня также есть другие действия с ключами. В моем случае было бы удобно, если бы я мог проверить, например, работает ли в данный момент SKAction с ключом «running» или нет.

Что-то типа:

if (mySpriteNode.runsAction("running")) {
    // do some magic code
}

На данный момент я просто обнаружил, что могу посмотреть, есть ли вообще действия, применяемые к узлу, например

mySpriteNode.hasActions

У кого-нибудь есть идея?


person boehmatron    schedule 20.04.2017    source источник
comment
Когда действие назначено узлу, оно выполняется, его невозможно приостановить (хотя вы можете приостановить узел).   -  person Knight0fDragon    schedule 20.04.2017
comment
@Knight0fDragon Вы можете приостановить действие, связанное с клавишей, с помощью метода action(forKey:), не приостанавливая работу узла ( action.speed = 0)...   -  person Whirlwind    schedule 23.04.2017
comment
Ааа, да, путаю с воспроизведением аудио, хорошо иметь напоминание   -  person Knight0fDragon    schedule 24.04.2017


Ответы (2)


Я нашел этот метод. Возможно, это то, что вам нужно:

func action(forKey key: String) -> SKAction?

Если существует действие, соответствующее ключу, возвращается объект действия. В противном случае возвращается ноль.

Вы можете использовать его так:

if let _ = mySpriteNode.action(forKey: "someKey") {
    // action is running
} else {
    // action is not running
}
person Sweeper    schedule 20.04.2017

if myspritenode.action(forkey: "some key") != nil {
 //runs if action is active
}

Это решение сработало для меня.

person Zach Russell    schedule 23.09.2018