【发布时间】:2016-07-25 09:37:52
【问题描述】:
我有一个显示多个成就的游戏菜单,这些成就被定义为 SKSpriteNodes,其中有 18 个,它们的位置只有轻微的变化,这里是代码的 sn-p:
Achievement1 = SKSpriteNode(color: SKColor.whiteColor(), size: CGSize(width: 100, height: 100))
Achievement1.position = CGPointMake(-120, 100)
page1ScrollView.addChild(Achievement1)
Achievement2 = SKSpriteNode(color: SKColor.whiteColor(), size: CGSize(width: 100, height: 100))
Achievement2.position = CGPointMake(0, 100)
page1ScrollView.addChild(Achievement2)
Achievement3 = SKSpriteNode(color: SKColor.whiteColor(), size: CGSize(width: 100, height: 100))
Achievement3.position = CGPointMake(120, 100)
page1ScrollView.addChild(Achievement3)
Achievement4 = SKSpriteNode(color: SKColor.whiteColor(), size: CGSize(width: 100, height: 100))
Achievement4.position = CGPointMake(-120, -25)
page1ScrollView.addChild(Achievement4)
我还竭尽全力将它们一一定义为 vars,如下所示:
var Achievement1: SKSpriteNode!
var Achievement2 = SKSpriteNode()
var Achievement3 = SKSpriteNode()
var Achievement4 = SKSpriteNode()
var Achievement5 = SKSpriteNode()
var Achievement6 = SKSpriteNode()
var Achievement7 = SKSpriteNode()
var Achievement8 = SKSpriteNode()
它看起来一团糟,只是占用了太多空间。我希望能够定义所有精灵节点,并让它们都能够被按下以显示一个框,说明成就的用途,如下所示:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touch: UITouch = touches.first!
let location: CGPoint = touch.locationInNode(self)
let node: SKNode = self.nodeAtPoint(location)
if (node == Achievement1) {
//achievement details here
}
我对这种 swift 语言还很陌生,我还不是很先进,但我希望能得到帮助。
【问题讨论】:
标签: swift sprite-kit swift2 skspritenode