ArkUI-翻卡片
该代码实现了一个9宫格卡片翻牌游戏。使用ArkUI框架,定义了一个包含9张卡片(3x3网格)的界面,每张卡片初始显示背面图片。点击卡片会翻转显示正面图片,并将已翻转卡片索引存储在openedCards数组中。当所有9张卡片都被翻转后(allOpened=true),可以点击已翻转卡片使其恢复背面状态。组件使用Grid布局管理卡片位置,通过ForEach动态渲染卡片,并根据openedCards状态
·

该代码实现了一个9宫格卡片翻牌游戏。使用ArkUI框架,定义了一个包含9张卡片(3x3网格)的界面,每张卡片初始显示背面图片。点击卡片会翻转显示正面图片,并将已翻转卡片索引存储在openedCards数组中。当所有9张卡片都被翻转后(allOpened=true),可以点击已翻转卡片使其恢复背面状态。组件使用Grid布局管理卡片位置,通过ForEach动态渲染卡片,并根据openedCards状态控制卡片显隐逻辑。
@Entry
@Component
struct Index49 {
@State openedCards: number[] = []
@State images: Resource[] = [
$r('app.media.f1'),
$r('app.media.f2'),
$r('app.media.f3'),
$r('app.media.f4'),
$r('app.media.f5'),
$r('app.media.f6'),
$r('app.media.f7'),
$r('app.media.f8'),
$r('app.media.f9')
]
@State allOpened: boolean = false
build() {
Column() {
Grid() {
ForEach([0, 1, 2, 3, 4, 5, 6, 7, 8], (item: number) => {
GridItem() {
if (this.openedCards.includes(item)) {
Image(this.images[item])
.objectFit(ImageFit.Fill)
.onClick(() => {
if (this.allOpened) {
this.openedCards = this.openedCards.filter(card => card !== item)
}
})
} else {
Image($r('app.media.kapian'))
.objectFit(ImageFit.Fill)
.border({ width: 1 })
.onClick(() => {
this.openedCards = [...this.openedCards, item]
if (this.openedCards.length === 9) {
this.allOpened = true
}
})
}
}
})
}
.columnsTemplate('1fr 1fr 1fr')
.rowsTemplate('1fr 1fr 1fr')
.width('100%')
.height('100%')
.backgroundColor(Color.White)
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
}
}更多推荐



所有评论(0)