Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SWIFT:SKSpriteNode将alpha设置为0,而不是将其从其父级移除_Swift_Sprite Kit_Skspritenode - Fatal编程技术网

SWIFT:SKSpriteNode将alpha设置为0,而不是将其从其父级移除

SWIFT:SKSpriteNode将alpha设置为0,而不是将其从其父级移除,swift,sprite-kit,skspritenode,Swift,Sprite Kit,Skspritenode,我有一个问题,我必须承认,我有点困惑。我必须显示/隐藏一些SpriteNodes这些是一些选项按钮,当游戏结束时会出现。如果播放机按下重试按钮SpritEndode,则该触摸调用的方法将其alpha设置为零。但有时它仍处于活动状态意味着alpha仍为1,在其他精灵之后,当游戏再次播放时,它前面的节点正在移动,并且变得可见。这是非常令人困惑的,是一种随机行为,我在想,如果把它从它的父母身上去掉,不管怎样,在必要时再加上它,是处理这种情况的更好方法。 代码如下: func restartGame()

我有一个问题,我必须承认,我有点困惑。我必须显示/隐藏一些SpriteNodes这些是一些选项按钮,当游戏结束时会出现。如果播放机按下重试按钮SpritEndode,则该触摸调用的方法将其alpha设置为零。但有时它仍处于活动状态意味着alpha仍为1,在其他精灵之后,当游戏再次播放时,它前面的节点正在移动,并且变得可见。这是非常令人困惑的,是一种随机行为,我在想,如果把它从它的父母身上去掉,不管怎样,在必要时再加上它,是处理这种情况的更好方法。 代码如下:

func restartGame()
{
restartButon.alpha = 0
......................
}
if nodeAtPoint(location).name == "someName"
{
restartGame()
}
值得一提的是,这个按钮的外观是由SKAction.fadeAlphaTo1,1.5创建的,它的初始alpha在didMoveToView覆盖方法中设置为0。
谢谢。

如果您仍然看到它,这显然意味着您程序中的某些内容正在将alpha设置为1

为什么不将节点的隐藏属性设置为true?这将隐藏它

通常,如果这是针对不总是显示的UI元素,那么最好通过包含所有UI元素的父节点来控制这些元素。例如,可以有一个包含所有按钮节点的菜单节点。注意,这是非常简单的,因为更复杂的UI需要更复杂的节点层次结构。但是如果你的用户界面是浮动在游戏上的图层,这就行了


这样做的好处是,您可以通过从树中删除父对象来删除所有内容,也可以将父对象的隐藏属性设置为true

Yes。我知道有很多解决办法。hidden=true就是其中之一。另一种方法是删除节点,从内存管理的角度来看,我真的不知道哪一个是最佳的。有时它仍然是alpha 1,有时不是。正如我之前所说的,这种行为是或者至少是随机的。我真的不知道这是谁的错误。我的还是我的。不管怎么说,这很奇怪。我确实移除了精灵,但是。。。这种情况降低了我的信任。如果你的精灵是SKNode/SKSpriteNode的子类,你可以创建setter-voidsetHidden:BOOLhidden,然后看看是谁调用它。或者,如果没有,您可以为显示问题的精灵创建一个子类。通常情况下,这是用户错误。这当然并不意味着编译器没有问题,这可能不是问题,或者SDK比编译器更有可能,但比您更不可能。