所以我有一个问题。 我正在使用库存系统制作游戏。 由于我是编程新手,因此我在互联网上搜索了很多内容并尽可能简单,但编写简单的代码就是很多文本..
关于库存,我得到了15个名为的按钮:
@IBOutlet var invbtn1 : UIButton!
@IBOutlet var invbtn2 : UIButton!
... til 15
他们得到一个“丢弃的项目”的图像 那个“丢弃的项目”的变量 转到我的库存类
class inventory1 {
var x = int()
var Y = int()
}
class inventory2 {
var x = int()
var y = int()
}
... til inventory15
所以我的问题是,有没有办法让它更短?如果是这样,怎么样?
答案 0 :(得分:1)
对于按钮,您应该在viewDidLoad
中动态生成它们。对于库存槽,您应该将它们放在一个数组中。
在viewDidLoad
中,您希望在for循环中创建UIButton
并将其添加到主视图中。
var inventoryBtns: [UIButton] = []
override viewDidLoad() {
for i in 0..<15 {
var btn = UIButton(frame: CGRectMake(i * 30 + 5, 10, 30, 30))
// the above creates a button. Its size is 30x30 and the x coordinate of it is i * 30 + 5
//here you can set the image and other properties of btn, omitted
inventoryBtns.append(btn)
view.addSubView(btn)
}
}
现在您可以使用
访问第一个按钮inventoryBtns[0]
第二次使用
inventoryBtns[1]
第三个使用
inventoryBtns[2]
等等。
现在对于库存,我不明白为什么要创建这么多类。但是从代码的外观来看,你创建了15个包含相同内容的类。我认为你应该为这个
创建一个元组数组var inventory: [(x: Int, y: Int)] = [()]
您可以像这样访问广告资源的第一项:
inventory[0]
第二个就像这样
inventory[1]
等等。
如果您想访问第一项的x
,可以
inventory[0].x
这很简单,不是吗?
如果您对上述内容了解不多,我强烈建议您阅读Apple Inc.的 The Swift Programming Language 2.0 ,因为这就是我学习swift的方式!
说真的,如果你想建立一个库存系统并且你缺乏元组和数组的基本知识,那就去获取一些基本的东西吧!不要以为你可以用一点点快速的知识建立一个完整的库存系统。
另外,如果您正在构建游戏,请使用SpriteKit,而不是UIKit。
编辑:
如果要向按钮添加动作,首先需要创建一个功能
func btnPressed(sender: UIButton!) {
//implement the action here
}
现在在for循环中,在append
thingy
btn.addTarget(self, action: "btnPressed:", forControlEvents: .TouchUpInside)
正如您所看到的,对于action
参数,您只需要在结尾处传递带有冒号:
的方法名称。