ios - 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];
解决方案
推荐阅读
- html - 如何在 CSS 中选择兄弟姐妹的第一个孩子
- python - 在 Apache Beam 中读取整个文件
- node.js - 如何识别正在执行哪种类型的自定义身份验证?
- vue.js - 无法选择第三方 Vue 插件生成的元素
- c - 无论如何要创建一个 if 语句来打印一个输出,说明我已经超过了多少公斤?
- selenium-webdriver - 如何用 selenium 和 java 修复这个 NullPointerException?
- java - 我的 CloudWatch 日志中缺少 AWSRequestId
- anypoint-studio - 如何在 Mulesoft 4 中使用 dataweave 获取流中的当前路径?
- c# - asp mvc core 3 自定义属性验证的客户端验证
- c++ - 使用不同的 clang 格式版本统一输出