我有一个场景,其中流星(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,但显然,编译器无法知道,因此它会返回错误。
答案 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
// ...
}