库存短编码

时间:2016-01-19 10:06:03

标签: swift

所以我有一个问题。 我正在使用库存系统制作游戏。 由于我是编程新手,因此我在互联网上搜索了很多内容并尽可能简单,但编写简单的代码就是很多文本..

关于库存,我得到了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

所以我的问题是,有没有办法让它更短?如果是这样,怎么样?

1 个答案:

答案 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参数,您只需要在结尾处传递带有冒号:的方法名称。