为什么图像没有变化?

狮子座

我在Swift(纸牌游戏)中编写了自己的第一个应用程序,并陷入了第一步……让我先向您展示代码。我有一个结构-卡-一个对象-甲板:

import SwiftUI

struct Card {

    enum suit: String {
        case clubs = "♠"
        case diamonds = "♢"
        case hearts = "♡"
        case spades = "♣"
    }
    
    struct Rank {
        let name: String
        let power: Int
    }
    
    let suit: suit
    let rank: Rank
    let pic: Image
}

class Deck {
    
    private var allSuits: [Card.suit] = [.clubs,.diamonds,.hearts,.spades]

    private var allRanks = [
        Card.Rank(name: "6", power: -4),
        Card.Rank(name: "7", power: -3),
        Card.Rank(name: "8", power: -2),
        Card.Rank(name: "9", power: -1),
        Card.Rank(name: "10", power: 0),
        Card.Rank(name: "J", power: 1),
        Card.Rank(name: "Q", power: 2),
        Card.Rank(name: "K", power: 3),
        Card.Rank(name: "A", power: 4)]
    
    let allCards: [Card]
    var cardsInGame: [Card]
    
    init() {
        var allCards = [Card]()
        for suit in allSuits {
            for rank in allRanks {
                allCards.append(Card(suit: suit, rank: rank, pic: Image("\(rank.name)\(suit.rawValue)")))
            }
        }
        self.allCards = allCards
        self.cardsInGame = allCards
    }

    public func shuffle() {
        self.cardsInGame = self.cardsInGame.shuffled()
    }

    var cardsLeftInDeck: Int {
        get {
            return cardsInGame.count
        }
    }
}

好像Deck在卡名称和那里的图片之间具有正确的链接。然后是ContentView.swift中非常简单的代码:

import SwiftUI

struct ContentView: View {
    
    var deck = Deck()
    
    var body: some View {
        
        VStack {
            Button("Shuffle cards", action: {
                deck.shuffle()
            })
            deck.cardsInGame[0].pic
        }
    }
}

因此,当我按下按钮时,卡座会随机播放,但显示的图像没有任何变化deck.cardsInGame[0].pic-保持不变。我在那里可能错过了什么问题?可能只是对我在当前的结构和类设置中可能做错了什么(目前为止对我了解不多)给出一些总体看法?

达维杰夫

您可以ObservableObject用来更新您的视图。

像这样声明甲板

class Deck: ObservableObject {

进而

@Published var cardsInGame: [Card]

现在在ContentView中将卡组声明为ObservedObject,并且图像会自动刷新

struct ContentView: View {
    
    @ObservedObject var deck = Deck()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么输出没有变化?

来自分类Dev

为什么我的变量没有变化?

来自分类Dev

为什么此WPF按钮背景在图像后面没有变化?

来自分类Dev

为什么listview项的高度没有变化?

来自分类Dev

为什么变量修改后没有变化?

来自分类Dev

为什么文件夹的背景没有变化?

来自分类Dev

为什么jQuery Tooltip位置没有变化?

来自分类Javascript

为什么初始值没有变化?

来自分类Dev

为什么我用于UIBarButtonItem的UIButton的高度没有变化?

来自分类Dev

为什么合并中补丁中没有任何变化?

来自分类Dev

为什么我的HTML元素的大小没有变化

来自分类Dev

为什么我的按钮高度没有变化?

来自分类Dev

为什么字体名称没有变化?(Java FX)

来自分类Dev

为什么光标在按钮上没有变化

来自分类Dev

为什么输入元素的值没有变化?

来自分类Dev

为什么映射后rxjs流量没有变化?

来自分类Dev

为什么Java中的值没有变化

来自分类Dev

为什么编辑后 JTable 数据没有变化?

来自分类Dev

为什么变量在功能上没有变化

来自分类Dev

为什么毕加索没有下载图像?

来自分类Dev

为什么我的图像没有褪色?

来自分类Dev

为什么文件的Inode号发生变化,而没有其他变化?

来自分类Dev

为什么我的for循环不递增,为什么我的接头没有变化?

来自分类Dev

为什么v-for项没有反应且没有变化?

来自分类Java

好奇为什么我的图像没有显示

来自分类Dev

为什么没有显示我的背景图像?

来自分类Dev

为什么我的图像没有充满绿色?

来自分类Dev

为什么单击按钮后图像没有改变?

来自分类Dev

为什么我的图像没有下载到ImageViews中?

Related 相关文章

热门标签

归档