Ios 沿路径留下精确轨迹的CAEmitterLayer动画
我需要在UIView中留下一条轨迹,该轨迹使用CAKeyframeAnimation设置动画Ios 沿路径留下精确轨迹的CAEmitterLayer动画,ios,ios7,cakeyframeanimation,caemitterlayer,caemittercell,Ios,Ios7,Cakeyframeanimation,Caemitterlayer,Caemittercell,我需要在UIView中留下一条轨迹,该轨迹使用CAKeyframeAnimation设置动画 Ball * ball = [[Ball alloc]init]; // customized the ball CGMutablePathRef path = CGPathCreateMutable(); // filling in the path from points. CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWi
Ball * ball = [[Ball alloc]init];
// customized the ball
CGMutablePathRef path = CGPathCreateMutable();
// filling in the path from points.
CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
anim.path = path;
anim.rotationMode = kCAAnimationRotateAuto;
anim.repeatCount = HUGE_VALF;
anim.duration = 1.2;
anim.cumulative = YES;
anim.additive = YES;
[ball.layer addAnimation:anim forKey:@"fly"];
现在,Ball.m将具有以下发射器层:
@implementation TennisBall{
__weak CAEmitterLayer *emitterLayer;
}
+ (Class)layerClass
{
return [CAEmitterLayer class];
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self setupLayer];
emitterLayer = [CAEmitterLayer layer];
emitterLayer.frame = self.bounds;
emitterLayer.emitterPosition = CGPointMake(160, 240);
emitterLayer.emitterSize = CGSizeMake(10, 10);
emitterLayer.renderMode = kCAEmitterLayerAdditive;
CAEmitterCell *emitterCell = [CAEmitterCell emitterCell];
emitterCell.birthRate = 1;
emitterCell.lifetime = 10.0;
emitterCell.lifetimeRange = 0.5;
emitterCell.velocity = 20;
emitterCell.velocityRange = 10;
emitterCell.emissionRange = 0;
emitterCell.scaleSpeed = 0.3;
emitterCell.spin = 0;
emitterCell.color = [[UIColor colorWithRed:0.8 green:0.4 blue:0.2 alpha:0.1]
CGColor];
emitterCell.contents = (id)[[UIImage imageNamed:@"first.png"] CGImage];
[emitterCell setName:@"fire"];
emitterLayer.emitterCells = [NSArray arrayWithObject:emitterCell];
[self.layer addSublayer:emitterLayer];
}
return self;
}
我只需要球留下一条轨迹,重复球移动的路径。如何实现这一点?为了确保发射器在球层的位置正确, 您需要确保发射器位置与其锚点相同 例如,如果锚点为(0,0),则发射器位置为(0,0)。
如果锚点为(0.5,0.5),尺寸为(0,0300300),则发射器位置为(150150)您找到解决方案了吗?