我有一个问题,我不得不承认,我有点困惑。我必须显示/隐藏一些SpriteNodes(这些是一些选项按钮,如果游戏结束将出现)。如果玩家按下了重试“按钮”(SpriteNode),则该触摸调用的方法是将其alpha设置为零。但有时候它仍然是“活跃的”(意味着阿尔法仍然是1),在其他精灵之后,当游戏再次播放时,它前面的节点正在移动并且变得可见。这是非常令人困惑的,并且是一种随机的行为,我想是从它的父母(无论如何是自己)中删除它,并在必要时再次添加它是一种更好的方法来处理这种情况。 代码如下:
func restartGame()
{
restartButon.alpha = 0
......................
}
if nodeAtPoint(location).name == "someName"
{
restartGame()
}
值得一提的是,这个按钮的外观是由SKAction.fadeAlphaTo(1,1.5)创建的,并且最初在didMoveToView()覆盖方法中将alpha设置为0。 感谢。
答案 0 :(得分:0)
如果你仍然看到它,它显然意味着程序中的某些东西将alpha设置为1.
为什么不将节点的hidden
属性设置为true?这将隐藏它。
通常,如果这是针对并非总是显示的UI元素,则最好通过可包含所有UI元素的父节点控制这些片段。例如,您可以有一个“菜单”节点,其中包含所有按钮节点。请注意,这非常简单,因为更复杂的UI需要更复杂的节点层次结构。但是,如果您的UI在游戏中“浮动”,那么这将起作用。
这样做的好处是你可以通过从树中删除父项来删除所有内容,或者只是将父项的hidden
属性设置为true