2022.09.25 Programming  spritekit  swiftui  
 2022.09.19 Programming  swiftui  
 2022.09.11 Programming  swiftui  
 2022.09.04 Programming  swiftui  
 2022.08.28 Programming  spritekit  
 2022.08.28 Programming  spritekit  
 2022.08.28 Programming  spritekit  
 2022.07.31 Programming  spritekit  
 2022.07.10 Programming  spritekit  
 2022.07.03 Programming  spritekit  
 2022.06.26 Programming  spritekit  
 2022.06.19 Programming  spritekit  
 2022.06.14 Programming  spritekit  swiftui  
 2022.06.04 Programming  spritekit  
 2022.05.22 Programming  spritekit  
 2022.05.04 Programming  spritekit  
 2022.04.29 Programming  spritekit  
 2022.04.24 Programming  spritekit  

Timer


import UIKit
import SpriteKit


class GameScene: SKScene, SKPhysicsContactDelegate {
 var toggle:Bool = true
  var lastUpdateTime : TimeInterval = 0
  var label: SKLabelNode!
  var myTimer = Timer()
  let timeLabel  = SKLabelNode(fontNamed: "Verdana-bold")
  var timeCount = 10

  override func didMove(to view: SKView) {
  backgroundColor = .yellow
  self.physicsWorld.contactDelegate = self
  self.physicsBody = SKPhysicsBody(edgeLoopFrom: self.frame)
  physicsWorld.gravity = CGVector(dx: 0.0, dy: 0.0)
  let ball = SKShapeNode(circleOfRadius: 40) //circleOfRadiusで円の半径
  ball.position = CGPoint(x:self.frame.midX, y:self.frame.midY+100)
  ball.fillColor = UIColor.white
  ball.lineWidth = 0.0
  ball.strokeColor = UIColor.red
  ball.physicsBody = SKPhysicsBody(circleOfRadius: ball.frame.width/2)
  self.addChild(ball)
  //ボールの飛んでいく方向
  ball.physicsBody?.applyImpulse(CGVector(dx: 40, dy: 40))
  ball.physicsBody?.affectedByGravity = false
  ball.physicsBody?.isDynamic = true
  ball.physicsBody?.friction = 0
  ball.physicsBody?.restitution = 1

timeLabel.text = "Count:\(timeCount)"
    //timeLabelが動かないようにleft固定
    //  timeLabel.horizontalAlignmentMode = .left
    timeLabel.fontSize = 50
    timeLabel.fontColor = SKColor.black
  timeLabel.position = CGPoint(x: self.frame.midX, y: self.frame.midY )
    self.addChild(timeLabel)
    // タイマーをスタートする(1.0秒ごとにtimerUpdateを繰り返し実行)
  myTimer = Timer.scheduledTimer(
     timeInterval: 1.0,
     target: self,
     selector: #selector(timerUpdate),
     userInfo: nil,
     repeats: true)
}

@objc func timerUpdate() {
   timeCount -= 1
   timeLabel.text = "Count:\(timeCount)"
if timeCount < 0 {
 myTimer.invalidate()
 self.timeLabel.isHidden = true
  // let scene = GameScene2(size: self.frame.size)
 //  let transition = SKTransition.moveIn(with: SKTransitionDirection.right, duration: 1.5)
 //  self.view?.presentScene(scene, transition: transition)
    let scene = GameScene2(size: self.frame.size)
    scene.scaleMode = scaleMode
    self.view!.presentScene(scene, transition: .doorsCloseVertical(withDuration: 0.8))    
   }
}
    
func fireTimer() {
    let date:Date = Date()
    let format = DateFormatter()
   format.dateFormat = "yyyy/MM/dd HH:mm:ss"
   let sDate = format.string(from: date)
    label = SKLabelNode(fontNamed: "Avenir-Black")
    label.text = sDate
    label.position = CGPoint(x: self.frame.midX, y: self.frame.midY + 50)
    label.fontSize = 20
    label.fontColor = SKColor.blue
    self.addChild(label)
 }
func toggleTest() {
   if(toggle){
 fireTimer()
   toggle = false;
 }else{
   label.removeFromParent()
   toggle = true;
 }
}
    
override func update(_ currentTime: TimeInterval) {
  if (lastUpdateTime == 0) {
  self.lastUpdateTime = currentTime - 0.5
   }
  if (currentTime - lastUpdateTime > 1) {
    toggleTest()
    lastUpdateTime = currentTime - 0.5
  }
}
}