首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建SKShapeNodes数组。Swift > Xcode 6

创建SKShapeNodes数组。Swift > Xcode 6
EN

Stack Overflow用户
提问于 2014-12-09 21:32:51
回答 1查看 1.7K关注 0票数 0

didMoveToView()中,以一定的速度(每秒2次)调用下面的代码。每次调用此函数时,屏幕上都会出现一个新的循环代码。但是,当尝试添加第二个错误时,它将抛出一个错误:尝试添加已经有父级的sknode,而不是不断地添加它们。我发现您不能在同一个视图上创建一个重复的节点。得到这个结果后,我得出结论,我需要创建一个SKShapeNodes数组,因此每当函数被调用时,它都会从数组中取出一个,并将其添加到视图中。在我的示例中,当节点到达底部(y = -20)时,它将需要删除该节点,并使其再次可用。

那么,我的问题是:如何制作一个SKShapeNode的数组,所以当调用下面的函数时,它将接受一个新的节点并将其显示到视图中?此外,当节点退出视图时,将需要再次使节点可用以供使用。

代码语言:javascript
复制
let circlenode = SKShapeNode(circleOfRadius: 25) //GLOBAL

func thecircle() {
    circlenode.strokeColor = UIColor.whiteColor()
    circlenode.fillColor = UIColor.redColor()

    let initialx = CGFloat(20) 
    let initialy = CGFloat(1015)

    let initialposition = CGPoint(x: initialx, y: initialy)
    circlenode.position = initialposition


    self.addChild(circlenode)

    let action1 = SKAction.moveTo(CGPoint(x: initialx, y: -20), duration: NSTimeInterval(5)) 
    let action2 = SKAction.removeFromParent()
    circlenode.runAction(SKAction.sequence([action1, action2]))
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-10 02:55:56

所以你是对的,上面的代码的问题是一个SKNode只能有一个父程序。

你有两条路可以走。

  1. 创建SKShapeNode的数组
  2. 根据需要创建一个新的SKShapeNode

前者有一个约束,即你需要保持对你的圆圈总数的关注,否则你就会超出你的界限。如果您删除项目,这也意味着说明它。后者具有在需要时生成SKShapeNode的开销。更有可能的是,这不会是一个问题。

要创建数组,您可以执行如下操作(选项1):

代码语言:javascript
复制
var circleArray:[SKShapeNode] = [SKShapeNode]() // Property in your class

// Code in your init or wherever else you want, depending on what class this is.
// 10 is just an arbitrary number
for var i=0;i<10;i++ {
    circleArray.append(SKShapeNode(circleOfRadius: 25))
}

当您想要将它添加到您的thecircle中时,您要在其中调用self.addChild(circlenode),如下所示:

代码语言:javascript
复制
if numCircles < circleArray.count {
    SKShapeNode *circlenode = circleArray[numCircles]

    // Do other initialization here

    self.addChild(circlenode)
    numCircles++
}

或者你可以这样做(备选方案2):

代码语言:javascript
复制
SKShapeNode *circlenode = SKShapeNode(circleOfRadius: 25)

// Do other initialization here

self.addChild(circle node)

为了不需要处理数组中许多杰出的圆圈的管理,我可能会做选项2。这是特别重要的,如果你曾经删除圆圈,并想回收他们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27389245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档