Mein Ziel ist es, eine Explosion ähnliche Animation zu machen, in der viele Partikel in kurzer Zeit emittiert werden. Mein Problem ist, dass CAEmitterLayer, wenn es zu senden beginnt, "zukünftige" Partikel hinzufügt, damit es so aussieht, als hätte die Animation schon eine Weile gedauert.Anfangspartikel von CAEmitterLayer beginnen nicht an der Emitterposition
Wie kann ich dies deaktivieren oder umgehen? Wenn ich den birthRate-Wert erhöhe, möchte ich nur, dass Partikel von der Emitterposition aus erscheinen und nicht an allen Punkten entlang der projektierten Lebensdauer der CAEmitterCell. Jede Hilfe wird geschätzt.
#import "EmitterView.h"
@interface EmitterView()
@property CAEmitterLayer* emitter;
@end
@implementation EmitterView
- (void) awakeFromNib {
[super awakeFromNib];
self.emitter = (CAEmitterLayer*)self.layer;
CAEmitterCell* snowflake = [CAEmitterCell emitterCell];
snowflake.contents = (id)[[UIImage imageNamed: @"snowflake"] CGImage];
snowflake.lifetime = 3;
snowflake.birthRate = 1;
snowflake.velocity = 50;
snowflake.emissionRange = 3.1415;
self.emitter.birthRate = 0;
self.emitter.emitterCells = [NSArray arrayWithObject: snowflake];
self.emitter.emitterPosition = CGPointMake(100, 100);
self.emitter.emitterSize = CGSizeMake(0, 0);
self.emitter.emitterShape = kCAEmitterLayerPoint;
}
+ (Class) layerClass {
return [CAEmitterLayer class];
}
- (void) burst {
self.emitter.birthRate = 10;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
self.emitter.birthRate = 0;
});
}
@end
Danke für die schnelle Antwort! – WaltersGE1
@ WaltersGE1 Ich habe ein paar mehr Informationen herausgefunden, die eigentlich helfen sollten. Anscheinend ist Apple sehr schlecht darin, einige sehr wichtige Dinge zu dokumentieren ... – Gavin
Ich werde das ausprobieren. Vielen Dank! – WaltersGE1