首页 > 解决方案 > CAEmitterLayer 耗尽电池

问题描述

我的项目涉及 IOS 12+ iPhone,我正在使用火发射器在屏幕上跟随用户的手指(使用平移手势识别器)。使用以下代码时,我注意到在玩游戏时屏幕会变热,并且使用该应用程序的次数越多,它往往会比平时更快地消耗电池电量。

有没有什么特别的需要有一个火发射器来跟随屏幕上的手指,但有一个电池友好的解决方案?

//set ref to the layer
 cursorEmiter = [CAEmitterLayer layer];

//configure the emitter layer
cursorEmiter.emitterPosition = CGPointMake(50, 50);
cursorEmiter.emitterSize = CGSizeMake(5, 5);
CAEmitterCell* fire = [CAEmitterCell emitterCell];


fire.birthRate = 1000; // The number of emitted objects created every second. Animatable
fire.lifetime = 0.6; // The lifetime of the cell, in seconds. Animatable
fire.lifetimeRange = 0.5;

fire.color = [[UIColor colorWithRed:1.0 green:0.4 blue:0.2 alpha:0.3]
              CGColor];

fire.contents = (id)[[UIImage imageNamed:@"PopCornSmall.png"] CGImage];

fire.velocity = 10; // The initial velocity of the cell. Animatable
fire.velocityRange = 20;
fire.scaleSpeed = 0.3;
fire.spin = 0.5;
cursorEmiter.renderMode = kCAEmitterLayerAdditive;

[fire setName:@"fire"];

//add the cell to the layer and we're done
cursorEmiter.emitterCells = [NSArray arrayWithObject:fire];
emiterNotAdded = false;
[(CAEmitterLayer *)self.layer addSublayer: cursorEmiter];

标签: iosobjective-ciphonexcode

解决方案


推荐阅读