【发布时间】:2014-06-07 19:21:52
【问题描述】:
我试图阻止发射器在我的 Sprite Kit 项目中无休止地播放。 Lifetime 设置设置为Start=1 和End=0,它显示了我想要的正确结果(只发出一次)。
当我在更新方法中调用它时,问题就来了,它不断发射,我尝试使用removeFromParent 和removeAllAction,但没有运气。你能帮我解决这里的问题吗?
-(void)update:(NSTimeInterval)currentTime {
[self updateheartPositionFromMotionManager];
[self matchIt];
if ( _heart.position.x == 512 && _heart.position.y == 484 ){
SKEmitterNode *emitter = [NSKeyedUnarchiver unarchiveObjectWithFile:
[[NSBundle mainBundle] pathForResource:@"sparkly" ofType:@"sks"]];
emitter.position = CGPointMake(self.frame.size.width/2,
CGRectGetMidY(self.frame)+100);;
emitter.name = @"exhaust";
emitter.targetNode =_heart;
[self addChild:emitter];
}else{
[self removeFromParent];
}
}
【问题讨论】:
-
从更新方法中删除。
-
所以如果
_heart的位置匹配,你就创建了一个发射器。对我来说似乎很难看,你很有可能在这里每秒创建 60 个发射器。就像@akashg 所说,从更新方法中删除创建。我建议你看看 SKEmitterNode 的属性numParticlesToEmit。 -
我知道我在做一些不同的事情。让我今天试一试并更新我的结果