【问题标题】:Manipulating alpha property vs adding/removing node操作 alpha 属性和添加/删除节点
【发布时间】:2017-09-20 09:19:48
【问题描述】:

如果我想要一个或多个节点(在这种情况下是一个带有两个“按钮”的“面板” - 例如:一个代表面板的节点,以及该面板上另外两个代表按钮的节点)出现并可供调用动作(使用 touchesBegan() 的按钮),我似乎能够通过在我的 .sks 场景中创建节点(颜色精灵)并使用 alpha = 0/1 来做到这一点。我也可以通过在 .swift 类中创建节点并使用 .addChild()/.removeFromParent() 函数以编程方式完成。

这些方法是否可以互换,或者是否存在使用 alpha 的危险,因为节点仍然存在,但没有看到?

【问题讨论】:

    标签: swift sprite-kit alpha addchild


    【解决方案1】:

    在 Spritekit 中,hiddenalpha 属性的默认值等于 0。

    来自 Apple 关于隐藏物品

    对象不被渲染。然而仍然存在于现场和 继续以其他方式与之互动

    所以这与创建对象但未将其添加到父对象相同

    刚刚对touchesBegan func 中检测到的对象运行测试。

    当对象有.alpha = 0 时,它仍然在touchesBegan 中检测到

    当对象被创建但没有添加到父对象时,它仍然在touchesBegan中被检测到

    所以我认为这两种方法是可比的

    编辑> 我的立场是,它们不具有可比性,请随时取消选择我的答案。请 cmets 看看使用 alpha = 0 的陷阱

    【讨论】:

    • 谢谢罗恩。这会导致问题吗?零 alpha 的对象如何以其他方式交互?我以为如果 alpha = 0,它可能存在,但无法与之交互。
    • 其他方法是......您可以检测位置,检查它是否与其他节点重叠并检查它的属性
    • 好的,我很欣赏罗恩。我想我现在明白了。
    • alpha 只是一个颜色分量。如果您明白我的意思,将 Alpha 设置为 0 与将颜色设置为红色几乎相同。在 sprite 级别,spritekit 在内部使用 alpha 属性来修改每个像素的颜色以混合它们,但以这种方式使其不可见并不会使其脱离渲染循环。
    • @BadgerBadger 的 alpha 值为 0 的项目与红色的对象不同。红色对象将被渲染,而 alpha 零节点则不会。请在我的回答中查看我对 Apple 的引用。
    猜你喜欢
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    相关资源
    最近更新 更多