这就是我目前正在做的事情。
patch1.position = CGPointMake(CGRectGetMidX(self.frame) - 80, CGRectGetMidY(self.frame) + 205)
patch1.yScale = 0.75
patch1.xScale = 0.75
self.addChild(patch1)
percent1.position = CGPointMake(CGRectGetMidX(self.frame) - 80, CGRectGetMidY(self.frame) + 125)
percent1.xScale = 0.5
percent1.yScale = 0.5
self.addChild(percent1)
patch2.position = CGPointMake(CGRectGetMidX(self.frame) - 80, CGRectGetMidY(self.frame) + 55)
patch2.yScale = 0.75
patch2.xScale = 0.75
self.addChild(patch2)
percent2.position = CGPointMake(CGRectGetMidX(self.frame) - 80, CGRectGetMidY(self.frame) - 25)
percent2.xScale = 0.5
percent2.yScale = 0.5
self.addChild(percent2)
除了我每个人都有8个。我只是觉得,毕竟说完了,经常更新这些将是一件痛苦的事。是否有更好的方法来进行这些设置,以便更新它们更容易/更有效?最后我将添加一个功能,当点击百分比++
编辑:这是图片
答案 0 :(得分:1)
我不确定这些精灵节点在您的应用中做了什么,但假设它们都在做类似的事情,您可以创建一个SKNode的子类并在该子类中声明它们。
class MySubclass: SKNode {
// Declare variables here.... initialize them in init().... ect.
let node1 = SKSpriteNode()
let node2 = SKSpriteNode()
override init(){
// DON'T FORGET TO ADD YOUR NODES AS CHILDREN!!
self.addChild(node1)
self.addChild(node2)
}
}
然后在主视图中,您可以执行以下操作:
let myNodeSubClass = MySubclass() //Assuming your subclass init doesn't have any parameters
override init(size: CGSize){
super.init(size)
myNodesubClass.position = CGPointMake(200, 200) //This will set the position of all the children of your sub class
}
答案 1 :(得分:0)
你可以使用方法。
func createSomething(yPosition: CGFloat,xScale: CGFloat, yScale: CGFloat) {
let percent = SKSpriteNode(imageNamed:"Something")
percent.position = CGPointMake(self.frame.size.width / 2 - 80, self.frame.size.height / 2 + yPosition )
percent.xScale = xScale
percent.yScale = yScale
self.addChild(percent)
}
你添加这样的对象:
self.createSomething(205, xScale: 0.75, yScale: 0.75);
self.createSomething(125, xScale: 0.5, yScale: 0.5);
self.createSomething(55, xScale: 0.75, yScale: 0.75);
self.createSomething(-25, xScale: 0.5, yScale: 0.5);