他の回答を検索しようとしましたが、私のシナリオに該当するものは見つかりませんでした。私は迅速にゲームを書いており、プレイヤーがどれくらいプレイしているかを決めるストップウォッチを作りたいと思っています。ユーザーがタッチすると、ストップウォッチが始まり、特定の動作が起こると、タイマーは停止してリセットされます。分、秒、ミリ秒(つまり、00:00.00)を使用したいと思います。すぐにストップウォッチを作成する
現在、機能の時間機能の種類。 0から始まらず、現在の秒で開始します(私は起動時にそれを知っていますが、0で起動する方法はわかりません)。また、画面に触れると更新されるだけです。私はそれを00:00.00からカウントし、キャンセルアクションが発生するまでそれ自身で更新する必要があります。
ありがとうございます。ここで
は、私がこれまで持っているものです。
class GameScene: SKScene {
var activeTimer = SKLabelNode()
//var bestTime = SKLabelNode()
var startTime = TimeInterval()
//var currentTime = TimeInterval()
//var countingTime = TimeInterval()
var updateTimerAction = SKAction()
override func didMove(to view: SKView) {
activeTimer = self.childNode(withName: "active_timer") as! SKLabelNode
//bestTime = self.childNode(withName: "best_time") as! SKLabelNode
startTime = TimeInterval(Calendar.current.component(.second, from:Date()))
updateTimerAction = SKAction.sequence([SKAction.run(updateTimer), SKAction.wait(forDuration: 1.0)])
}
func startGame() {
// Other code
startGameTimer()
}
func resetGame() {
// Other code
stopGameTimer()
}
func startGameTimer() {
run(SKAction.repeatForever(updateTimerAction), withKey: "timer")
}
func updateTimer() {
activeTimer.text = stringFromTimeInterval(interval: startTime) as String
}
func stringFromTimeInterval(interval: TimeInterval) -> NSString {
let ti = NSInteger(interval)
let ms = Int((interval.truncatingRemainder(dividingBy: 1)) * 1000)
let seconds = ti % 60
let minutes = (ti/60) % 60
return NSString(format: "%0.2d:%0.2d.%0.2d",minutes,seconds,ms)
}
func stopGameTimer() {
removeAction(forKey: "timer")
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
startGame()
for touch in touches {
// other code
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
// other code
}
}
override func update(_ currentTime: TimeInterval) {
updateTimer()
if <action> {
// stop timer and reset game
resetGame()
}
}
私はhttps://stackoverflow.com/questions/23978209/spritekit-creating([HERE]私はこの質問に応じたゲームシーンにタイマー(以前NSTimer)を使用すると仮定していなかった印象の下にありました-a-timer/23978854#23978854) –
これは正しいですが、Timer *は簡単なゲームで動作しますが、最終的にはSpriteKitでいくつかの問題が発生します。このためにSKAction.waitなどを使用するのが最善です – Fluidity
@Fluidity私は彼が言っているとは思わない。 Timerオブジェクトを使うべきだと教えてくれました。 Timerオブジェクトを使用しないでください。私は、SKSceneでTimerオブジェクトを使用しないと言います。 –