在哪里添加孩子?

时间:2015-10-02 16:37:24

标签: ios swift sprite-kit

我正在Swift开发一款小游戏,而且还有一些我一直在努力的事情。在这个自定义类中,我使用的是touchesBegan方法,在这个方法中我想创建一个SkNode。这是我的代码:

class TouchableSpriteNode : SKSpriteNode

    {


    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

        self.removeFromParent()
        let delay = Int(arc4random_uniform(UInt32(200)))*Int(NSEC_PER_SEC)/100
        let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
        dispatch_after(time, dispatch_get_main_queue()) {
            let random2 = arc4random_uniform(UInt32(self.frame.size.width))
            let random3 = arc4random_uniform(UInt32(self.frame.size.height))

            div.position = CGPoint(x: Int(random2), y: Int(random3))
            self.addChild(div)
        }
        }
}

问题是,我无法将其显示在屏幕上,因为我收到一条错误消息,说明您不能生孩子,因为这是他自己的父母(&#39) ; s复杂),我想知道的是我怎么能说孩子到现场,而不是这个skspritenode? 任何帮助表示赞赏!感谢

2 个答案:

答案 0 :(得分:1)

这不是您正在寻找的答案,但我不确定您是否可以从另一个类中向视图控制器添加节点。对于这种情况,我建议在viewcontroller中实现touchesBegan,并在该函数内部检测触摸是否发生在可触摸节点上。然后,您可以轻松地在视图中添加和删除对象。

答案 1 :(得分:1)

我将在未经测试的情况下编写此内容,但它应该可以正常工作:在致电self.removeFromParent()之前添加行parent = self.parent;然后,使用parent.addChild(div)代替self.addChild(div)

这样做了吗?