我正在创建一个游戏,其中取决于所选择的“滑动”次数(假设为3),屏幕上会逐个显示3种不同的模式。我是致力于开发第一种模式。
所以我有这个:
if (swipes.no_of_swipes) == 3 {
swipeArray = Array<UInt32>(count: 3, repeatedValue: 0)
for i in 0 ..< 3 {
swipeArray[i] = arc4random_uniform(84)}
}
据我所知,此代码创建了一个包含三个UI 的数组,其中可以通过swipeArray [0],swipeArray [1]和swipeArray [2] <来访问/ strong>即可。我的第一个问题是这个swipeArray会保持多长时间?直到关闭视图? 当用户输掉时,我应该有一个“刷新按钮” - 如果是这样,我该怎么做?
然后我有一个属性观察者。您会注意到 for循环,我用它来保存代码简洁。我知道我可以在这里的某个地方做x++
这样的事情,这样它就可以通过每一个。
var playBegin: Bool = false{
didSet {
if playBegin == true {
println("\(playBegin)")
var swipes = Menu()
if (swipes.no_of_swipes) == 3 {
for i in 0 ..< 3 {
patternRoom.image = UIImage(named: "pattern\(swipeArray[x])")
//rest of code
}
}
}
图案图片来自名为pattern7
和pattern56
的 84张图片。我的第二个问题是,我怎么能编写for循环来遍历每个swipeArray [x] 。
提前谢谢你,
威尔
答案 0 :(得分:0)
这个swipeArray会保持多长时间?
这有点太开放了。它会保持不变,直到你为它分配一个新值,无论是从相同的代码位还是从不同的部分。只有你可以通过查看你的代码知道什么时候。
由于您表示有兴趣保持代码简洁,这里有几个代码提示。
您可能会考虑编写第一个代码段的循环:
swipeArray = (0..<swipes.no_of_swipes).map { _ in
arc4random_uniform(84)
}
这结合了创建一个新数组并填充值。顺便说一下,如果你没有意识到,不能保证这个数组不会包含两次相同的值。
最好是swipeArray
类型[Int]
而不是[UInt32]
,并立即将arc4random
的结果转换为Int
:
Int(arc4random_uniform(84))
否则UInt32
可能会很麻烦。
对于你的第二个for循环,你可以这样做:
for i in swipeArray {
patternRoom.image = UIImage(named: "pattern\(i)")
// rest of code
}
编写Swift时,通常(但并非总是如此),当你发现自己使用array[x]
时,有更好的表达方式。