Swift中非常基本的节点移除

Swift中非常基本的节点移除,swift,skspritenode,removechild,Swift,Skspritenode,Removechild,我在swift中发现了一些关于节点移除的其他问题,但它们似乎都与我的问题不太相关 我只想做一个基本的节点删除,例如: override func touchesBegan(touches: NSSet, withEvent event: UIEvent){ let covernode1 = SKSpriteNode(imageNamed: "tester") covernode1.position = CGPointMake(100.0, 600.0) for touch: AnyObje

我在swift中发现了一些关于节点移除的其他问题,但它们似乎都与我的问题不太相关

我只想做一个基本的节点删除,例如:

override func touchesBegan(touches: NSSet, withEvent event: UIEvent){

let covernode1 = SKSpriteNode(imageNamed: "tester")

covernode1.position = CGPointMake(100.0, 600.0)

for touch: AnyObject in touches {

if self.nodeAtPoint(location) == self.fake {

button1++
button2++
}

if(button1 == 1 && button2 == 1){

addChild(covernode1)

}

if(button1 == 2 && button2 == 2){
//THIS IS WHERE I WANT TO REMOVE THE NODE
}
我试过了

covernode1.removeFromParent() 
但是没有用

代码可以很好地运行addChild部分,但是删除似乎是个问题。我甚至尝试改变节点的位置,使其脱离屏幕,比如

covernode1.position = CGPointMake(-100.0, -600.0)
这也不管用


谢谢。

一件简单的事情就是使用

covernode1.hidden = true
注意

还要确保
if
语句实际运行,因为我不知道为什么您尝试的东西不起作用。要测试这一点,请在
if
块中放置
println(“日志”)


希望这有帮助:)

不幸的是,我没有足够的声誉来评论你最初的问题,因此这本身可能不是一个“答案”,但我会尝试诊断我认为发生了什么,希望你能为我澄清一些问题

您试图从if语句的父视图中删除的
covernode1
可能与调用
addChild(covernode1)时添加到视图中的节点不同

我认为是这样的,因为当你说你正在使用
covernode1.position=CGPointMake(-100.0,-600.0)
但它仍然不起作用时,这让我觉得这是一个完全不同的SKNode对象

相反,尝试将函数外部的
covernode1
声明为类变量。这样,当您实际实例化它并在函数中引用它时,它将捕获您要查找的正确节点。如果这些有帮助,请告诉我。当我从你的回答中了解到更多信息时,我将编辑答案

另外,您的
button1
button2
变量最初是否设置为1


编辑:另一个问题:您在调用
.removeFromParent()
时是否收到任何错误,或者只是“什么都没做”

从按钮1和按钮2,我想您正在尝试这样做:在第一次单击时,您添加了一个SKNode。在第二次单击时,您希望删除SKNode。 因此,在第二次单击时,让covernode1=SKSpriteNode(ImageName:“tester”)
是一个不同的实例,尽管它具有相同的变量名!因此,第二次单击时的实例是不可移动的,因为它没有添加到任何内容中

试试这个

if(button1 == 1 && button2 == 1){
    addChild(covernode1)
    self.tempChildCount = count(self.children) //tempChildCount is an integer
}

if(button1 == 2 && button2 == 2){
    let childNode = self.children[self.tempChildCount - 1 ] as! SKNode
    self.removeChildrenInArray([childNode])
}

尝试使用println()找出问题在代码中的位置。我的猜测是,
if(button1==2&&button2==2){//这是我要删除节点的地方}
甚至没有运行我尝试按照您的建议在控制台中打印文本,“if语句”正在正确运行,并且在控制台中打印文本。不幸的是,这不起作用。我通过在控制台中打印文本来测试条件“if语句”,它正在运行。“covernode”下还有一个节点,这可能是问题的一部分吗?你说的“under”是什么意思?在
.zPosition
的意义上,或者它是同一视图的子视图?在位置的意义上,covernode正在覆盖另一个作用于精灵的SKNode。为什么不将该SKNode也隐藏起来?更改
covernode1
的位置只是试图使其消失。(我在中添加这一点只是为了指出我希望“covernode1”以任何方式消失)。我不知道为什么它会是一个不同的节点,如果可能的话,你能解释一下为什么吗?我的
按钮1
按钮2
最初设置为0。不,我没有收到任何错误,只是什么都没有发生。对,我知道你在试图做一个临时修复。所以我将根据我认为可能发生的事情来编辑我的答案。让我知道它是否有效,我们可以从那里开始。我试图将covernode声明为类变量,但我得到了一个SIGABRT错误:“尝试添加一个已经有父节点的SKNode”啊,好的,所以还有一个澄清可能会有所帮助:这个“covernode”,在SKScene中应该只有一个实例吗?或者你是在故意尝试多个实例?我知道您遇到的错误,我想我已经解决了,请告诉我最后一个问题。情况就是这样:我的屏幕上有一个精灵,它有一些与covernode问题无关的特性。我还有其他六个节点,它们改变了精灵和屏幕等的某些特性。。。这些位于原始精灵操作的区域上方。如果用户单击其中两个更改某些特征的节点,我希望其他四个节点被覆盖且不可用(用户可以同时打开两个更改精灵特征的精灵)。