저는 현재 파티클 시스템으로 연습하고 있는데, 다음 코드가 버튼을 누를 때 파티클을 멈추고 시작할 수 있는지 궁금합니다.이것이 파티클 시스템을 시작하고 멈추는 올바른 방법입니다
코드가 잘 작동하고 시작 버튼을 터치하고 입자가 시작되면 정지 버튼을 터치하고 입자가 멈 춥니 다. 그러나 removeFromSuperLayer
이 올바른 방법인지 확실하지 않습니다. 앞서 말했듯이, 코드는 필요로하지만, 단지 removeFromSuperLayer
을 호출하고 최종적인 리소스 낭비를 한 후에도 입자가 백그라운드에서 계속 실행되지 않도록하고 싶습니다.
- (IBAction)stopAnimation:(id)sender
{
[emitterLayer removeFromSuperlayer];
}
- (IBAction)startAnimation:(id)sender
{
[self particle];
}
-(void) particle
{
emitterLayer = [CAEmitterLayer layer];
emitterLayer.emitterPosition = CGPointMake(50 ,50);
emitterLayer.emitterZPosition = 10;
emitterLayer.emitterSize = CGSizeMake(10,10);
emitterLayer.emitterShape = kCAEmitterLayerSphere;
CAEmitterCell *emitterCell = [CAEmitterCell emitterCell];
emitterCell.scale = 0.1;
emitterCell.scaleRange = 0.2;
emitterCell.emissionRange = (CGFloat)M_PI_2;
emitterCell.lifetime = 10;
emitterCell.birthRate = 5;
emitterCell.velocity = 20;
emitterCell.velocityRange = 50;
emitterCell.yAcceleration = 0;
emitterCell.contents = (id)[[UIImage imageNamed:@"particleImage.png"] CGImage];
emitterLayer.emitterCells = [NSArray arrayWithObject:emitterCell];
[self.view.layer addSublayer:emitterLayer];
}
감사합니다 당신은 다음과 같은 넣어하는 방법 사용할 수있는 많은
고마워요, 제가 가지고있는 것보다 훨씬 더 의미가 있습니다. –
@fs_tigre :'self.emitterCell.birthRate = 0.0f;'가 레이어를 숨길까요? –
아니, 내 마지막 의견을 내 최종 솔루션을 참조하십시오. –