2015-03-06 2 views
0

Нам нужно оживить размер объекта в GameScene.swift. Другие сообщения о переполнении стека предлагают использовать UIView.animateWithDuration, но это недоступно в GameScene.swift. Нам нужно анимировать внутри GameScene.swift, потому что нам также нужен доступ к SKAction для запуска действия навсегда.Размер анимационного объекта в GameScenes.swift (Swift)

Прямо сейчас, мы используем следующий код, но он слишком неуклюжий. Надежда - это анимация, которая сгладит внешний вид объекта по мере его сжатия.

runAction(SKAction.repeatActionForever(
     SKAction.sequence([ 
      SKAction.runBlock(shrinkItem), 
      SKAction.waitForDuration(0.5) 
      ]) 
     )) 

func shrinkItem() { 
    let curWidth = item.size.width 
    if curWidth < 15 { 
     return 
    } 
    item.size = CGSize(width: CGFloat(item.size.width - 20), height: CGFloat(bird.size.height - 20)) 
} 
+0

Что такое GameScene.swift? Вы пытались импортировать UIKit? – Aggressor

ответ

0

Что вы пытаетесь сделать, это сжать вашу птицу, верно? Это соответствует шкале.

Почему вы делаете это вручную внутри runBlock?

Возможно, вы захотите ознакомиться с SKAction Class Reference: http://goo.gl/ycPYcF. Внутри вы увидите все возможные действия, и scaleBy:duration: (или другой) может быть тем, что вы ищете.

let shrinkAction = SKAction.scaleBy(0.5, duration: 1.0) 
let waitAction  = SKAction.waitForDuration(0.5) 
let sequenceAction = SKAction.sequence([shrinkAction, waitAction]) 
let repeatAction = SKAction.repeatActionForever(sequenceAction) 

self.yourBirdNode.runAction(repeatAction) 

В зависимости от того, что вы будете делать дальше, обратите внимание, что некоторые действия автоматически обратимые (через reversedAction), а некоторые нет.

Смежные вопросы