簡體   English   中英

使用Swift鎖定或保存圖像

[英]Locking or holding an image with Swift

我正在用Swift制作一個小型骰子游戲。 我從一個粗略的課程開始,現在卻錯過了我真正想要實現的功能。

我有兩個骰子和一個按鈕。 如果我按下按鈕,兩個骰子都會滾動。 有沒有辦法鎖定骰子?

例如:我拋出“ 3”和“ 1”。 我點擊“ 1”並按下“ throw”按鈕,現在只有“ 3”滾動,而“ 1”保持為“ 1”。

任何人都可以幫我這個忙嗎? 我希望我的問題和例子很清楚可以理解。

期待您的答復。

這是代碼:

    @IBOutlet weak var diceImage1: UIImageView!
    @IBOutlet weak var diceImage2: UIImageView!

    var randomDiceIndex1 : Int = 0
    var randomDiceIndex2 : Int = 0

    let diceArray = ["dice1", "dice2", "dice3", "dice4", "dice5", "dice6"]

    override func viewDidLoad() {
        super.viewDidLoad()

        updateDiceImages()

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func buttonPressed(_ sender: Any) {

        updateDiceImages()

    }

    func updateDiceImages(){

        randomDiceIndex1 = Int(arc4random_uniform(6))
        randomDiceIndex2 = Int(arc4random_uniform(6))

        diceImage1.image = UIImage(named: diceArray[randomDiceIndex1])
        diceImage2.image = UIImage(named: diceArray[randomDiceIndex2])

    }

    override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) {
        updateDiceImages()
    }
}

使您的骰子成為UIButtons而不是UIImageView(您可以為Buttons分配圖像,就像Images一樣,但是它們可以被輕敲)。 創建2個布爾值,並將其命名為“ lockDice1”和“ lockDice2”。為兩個按鈕都設置@IBAction,並將其命名為“ switchDice1Lock”和“ switchDice2Lock”。 在此功能內部,您可以像這樣切換diceLocks

lockDice1 = !lockDice1

lockDice2 = !lockDice2

相應地。

然后改變

    randomDiceIndex1 = Int(arc4random_uniform(6))
    randomDiceIndex2 = Int(arc4random_uniform(6))

    randomDiceIndex1 = lockDice1 ? randomDiceIndex1 : Int(arc4random_uniform(6))
    randomDiceIndex2 = lockDice2 ? randomDiceIndex2 : Int(arc4random_uniform(6))

然后它應該工作。

這是您的問題的解決方案:

向您的骰子圖像添加點擊手勢並更改其突出顯示狀態,如果突出顯示狀態,請不要更改該骰子,否則請更改圖像。

在imageView中添加邊框確認模具被鎖定。

class ViewController: UIViewController, UIGestureRecognizerDelegate {

  @IBOutlet weak var diceImage1: UIImageView!
  @IBOutlet weak var diceImage2: UIImageView!

  var randomDiceIndex1 : Int = 0
  var randomDiceIndex2 : Int = 0


  let diceArray = ["dice1", "dice2", "dice3", "dice4", "dice5", "dice6"]

  override func viewDidLoad() {
    super.viewDidLoad()

    updateDiceImages()

    let die1tap = UITapGestureRecognizer(target: self, action: #selector(dice1Tapped))
    let die2tap = UITapGestureRecognizer(target: self, action: #selector(dice2Tapped))
    diceImage1.addGestureRecognizer(die1tap)
    diceImage2.addGestureRecognizer(die2tap)

  }

  @IBAction func buttonPressed(_ sender: Any) {

    updateDiceImages()

  }

  @objc func dice1Tapped() {

    diceImage1.isHighlighted = !diceImage1.isHighlighted
    if !diceImage1.isHighlighted {
        diceImage1.layer.borderWidth = 0
    }else {
        diceImage1.layer.borderWidth = 2
        diceImage1.layer.borderColor = UIColor.red.cgColor
    }
  }

  @objc func dice2Tapped() {
    diceImage2.isHighlighted = !diceImage2.isHighlighted
    if !diceImage2.isHighlighted {
        diceImage2.layer.borderWidth = 0
    }else {
        diceImage2.layer.borderWidth = 2
        diceImage2.layer.borderColor = UIColor.red.cgColor
    }
  }


  func updateDiceImages(){

    if !diceImage1.isHighlighted {
        randomDiceIndex1 = Int(arc4random_uniform(6))
        diceImage1.image = UIImage(named: diceArray[randomDiceIndex1])
    }
    if !diceImage2.isHighlighted {
        randomDiceIndex2 = Int(arc4random_uniform(6))


        diceImage2.image = UIImage(named: diceArray[randomDiceIndex2])
    }


  }

  override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) {
    updateDiceImages()
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM