【发布时间】:2015-02-12 11:18:26
【问题描述】:
我正在尝试了解 SKActions 的工作原理。特别是SKAction.runAction(),其中一个参数是动画的持续时间。然而,似乎无论我输入什么持续时间,动画都会渲染每一帧。我曾尝试将SKAction.runAction() 线放在其他地方,但它似乎只适用于SKScene 中的update() 覆盖方法。我试过SKAction.repeatActionForever,但这似乎无法与其他进程并行运行。
我的问题是,如果动画的持续时间有一个必需的参数,那么将SKAction.runAction() 方法放在哪里可以让动画根据给定的持续时间而不是帧速率运行?
这是我的代码:
GameScene.swift(Player类是Character类的子类,参考下面的代码)
let player = Player()
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
//Code here to recognize user inputs
scene?.addChild(player.sprite)
}
override func update(currentTime: CFTimeInterval) {
player.sprite.runAction(SKAction.runBlock(player.move))
}
}
CharachterClass.swift move() 函数
func move(){
switch(direction){
case "up":
sprite.position = CGPoint(x: sprite.position.x, y: sprite.position.y + speed)
case "down":
sprite.position = CGPoint(x: sprite.position.x, y: sprite.position.y - speed)
case "right":
sprite.position = CGPoint(x: sprite.position.x + speed, y: sprite.position.y)
case "left":
sprite.position = CGPoint(x: sprite.position.x - speed, y: sprite.position.y)
default:
break
}
SKAction.moveTo(sprite.position, duration: 1)
}
注意:direction 变量是精灵移动的方向,speed 变量是每次运行SKAction 时精灵应该移动的像素数量。
【问题讨论】:
标签: ios swift sprite-kit skaction