【问题标题】:CAEmitterCell does not respect the duration valueCAEmitterCell 不尊重持续时间值
【发布时间】:2023-03-09 15:38:01
【问题描述】:

我有一个发射器,我想在 2 秒后结束,但我无法让它停止运行!

我的代码如下:

// Emitter Layer
    //
    emitter = [CAEmitterLayer layer];
    emitter.emitterSize = CGSizeMake(20, 20);
    emitter.renderMode = @"additive";
    emitter.emitterMode = @"points";
    emitter.emitterShape = @"rectangle";
    emitter.emitterPosition = CGPointMake(310, 230);
    //emitter.duration = 2; // setting duration on the emitterLayer prevents anything from firing it seems

// Emitter Cells
    //

    // 'New Emitter' cell configuration
    newEmitter = [CAEmitterCell emitterCell];
    newEmitter.scaleSpeed = 7;
    newEmitter.lifetime = 2.481715;
    //newEmitter.duration = 2; // I would expect this to stop the emitter after 2 seconds, but it doesn't!
    newEmitter.velocity = 332.3636968085106;
    newEmitter.contents = newemitterImg;
    newEmitter.name = @"New Emitter";
newEmitter.scaleRange = 4.178236607142859;
    newEmitter.lifetimeRange = 1.6;
    newEmitter.greenRange = -2.775558e-17;
    newEmitter.birthRate = 40;
    newEmitter.emissionRange = -6.283185306666667;
    newEmitter.scale = 0;

    // Emitter Cell Chains
    //

    emitter.emitterCells = [NSArray arrayWithObjects:newEmitter, nil];

尽管作为 iOS 的一部分已有大约 2 年的时间,但关于这方面的信息似乎很少!

【问题讨论】:

    标签: iphone ios caemitterlayer caemittercell


    【解决方案1】:

    您可以使用计时器和方法来阻止发射器生成新粒子...

    在现有代码的末尾添加:

        [newEmitter setName:@"newEmitter"];
        [NSTimer scheduledTimerWithTimeInterval:2.0
                                         target:self
                                       selector:@selector(stopEmitter:)
                                       userInfo:nil
                                        repeats:NO];
    

    然后制作一个 stopEmitter: 方法……

        - (void) stopEmitter:(NSTimer*)timer
        {
            [emitter setValue:@0
                   forKeyPath:@"emitterCells.newEmitter.birthRate"];
        }
    

    【讨论】:

    • 非常感谢!您在这里的帮助非常有用!
    • 在 CAEmitterLayer 实例上设置birthRate 本身为我解决了这个问题。也许在后来的 iOS 版本中有所改变?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多