“SKNode”类型的Swift值没有成员'particleBirthRate'

时间:2018-05-17 10:29:24

标签: swift

我有一个场景,其中流星(SKSpriteNodes)落在路径上(SKEmitterNodes)。每个流星都有一个与其踪迹名称相匹配的唯一名称。

你可以向下射击这些流星,并在接触到子弹时将它们移除。为了删除流星伴随的踪迹,我遍历所有现有节点并删除与流星同名的节点。

这条突然“消失”的踪迹看起来不自然,因为我想要已经发射的粒子完成它们的循环。因此,我写了以下内容:

for child in children {
        if child.name == meteorite.name {
            child.particleBirthRate = 0 //Stops new particles from being created
            delay(2) {
                child.removeFromParent()
            }
        }
    }

XCode的编译器返回:

  

'SKNode'类型的值没有成员'particleBirthRate'

我不知道如何解决这个问题,因为我知道具有相同名称的节点必须是SKEmitterNode,但显然,编译器无法知道,因此它会返回错误。

2 个答案:

答案 0 :(得分:1)

您可以使用条件绑定。像这样:

Select T1.Order_id,
T1.Order_quantity,
T2.Order_price,
T1.Order_quantity*T2.Order_price As "Order_amount",
Sum(Order_amount) As "Total_Sales"
from Table1 T1
inner join Table2 T2
on T1.Order_id = T2.Order_id

答案 1 :(得分:0)

另一个选项是带有for模式的case循环:

for case let emitter as SKEmitterNode in children {
    if emitter.name == meteorite.name {
        emitter.name.particleBirthRate = 0 
        // ...
    }
}

仅对类型为SKEmitterNode的节点执行循环体。

这可以与where约束结合使用:

for case let emitter as SKEmitterNode in children where emitter.name == meteorite.name {
    emitter.name.particleBirthRate = 0 
    // ...
}