问题标签 [caemittercell]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
688 浏览

ios - CAEmitterLayer 没有用 CACurrentMediaTime() 正确计时,有时根本不显示

我目前正在使用 CAEmitterLayer 制作一个粒子发射器,并且在我启动它时遇到了层预加载动画的问题,因此当我显示它时粒子遍布整个地方。

许多答案都说罪魁祸首是 CAEmitterLayer 被预加载,我们只需在发射器上将其 beginTime 设置为 CACurrentMediaTime() 。

看:

CAEmitterLayer 在触摸事件中随机发射不需要的粒子

CAEmitterLayer 的初始粒子不在emitterPosition 开始

iOS 7 CAEmitterLayer 不恰当地产生粒子

对我来说,这个解决方案不起作用,在运行 iOS 12.1 的 iPad Air 设备上运行时,发射器经常不显示,有时显示延迟很大。

为了说明这个问题,我在 github 上做了一个项目: https ://github.com/roodoodey/CAEmitterLayer/tree/master/CAEmitterLayerApp

这是主要代码,我有 7 个随机选择的粒子图像和一个在按下时显示发射器的按钮。

这是在设备上运行的应用程序的 20 秒短视频,iPad Air 运行 iOS 12.1,而不是通过 xcode 运行。https://www.dropbox.com/s/f9uol3yot67drm8/ScreenRecording_11-25-2018%2013-19-29.MP4?dl=0

如果有人可以查看他们是否可以重现此问题或对这种奇怪的行为有所了解,将不胜感激。

0 投票
1 回答
480 浏览

ios - iOS(Swift)在初始化后更改 CAEmitterCell 的属性

我的目标是使用 a 创建一个火焰效果CAEmitterLayer,其强度可以通过更改alphaSpeed其给定属性的值来改变CAEmitterCells。较小的值alphaSpeed会导致“咆哮”的火灾,而较大的值会抑制火灾。

到目前为止,我有一个CAEmitterLayer调用的子类,FireEmitterLayer其初始化程序由以下给出:

UIImage为代表 30x30 火焰图像的 s数组生成发射器单元:

每个单元格都是使用此方法创建的:

有没有办法alphaSpeed从这个子类的一个实例中改变这些单元格的值,比如说,fireEmitterLayer在 some UIViewController

我试过在FireEmitterLayer类中添加这个方法

但这不起作用...

任何帮助表示赞赏:-)

0 投票
2 回答
112 浏览

ios - CAEmitterLayer 最终在添加 EmitterCells 时有延迟

我们已经看到了一个非常奇怪的问题(下面的 gif 图像),

  1. 我们有一个呈现的 View Controller,它有一个TeamBadgeView,它是一个按钮,它发出 emoji 作为CAEmitterCells
  2. 点击此按钮可让用户在他们的屏幕上发送垃圾邮件
  3. 关闭呈现的视图控制器,并重新呈现视图控制器,现在有一个延迟。我呈现/关闭视图控制器的CAEmitterCell次数越多,响应速度就越慢
  4. 确认这不是泄漏问题,视图控制器和按钮正在正确释放
  5. 我试过移动CAEmitterLayer和移动CAEmitterCell,在按钮中保存一个引用,并在本地声明,但类似的问题
  6. 也许最奇怪的是,如果我根本不按下按钮,只是多次呈现/关闭视图控制器,然后按下按钮,就会有延迟。唯一没有延迟的情况是在第一次显示 View Controller 时按下按钮
  7. 每次我向按钮发送垃圾邮件时,我都确认按钮的action触发是正确的。只是发射器单元没有渲染几秒钟。并且一些发射器单元根本不渲染

它已经到了令人难以置信的地步,有人对这可能是什么有任何想法或线索吗?

ViewController 的第一个介绍:
在此处输入图像描述

在 ViewController 的第 5 次演示之后(以相同的速度按下按钮):

在此处输入图像描述

视图控制器代码:

按钮代码:

0 投票
1 回答
335 浏览

ios - CAEmitterLayer在swift中的发射经纬度

你好我有一个关于发射经度和纬度的问题,我不知道它们是用来做什么的。我目前正在学习一本关于动画的教程书,我现在在 CAEmitterLayer 上,我已经停止学习,因为我不知道这两件事。我会感谢你的帮助。谢谢你。

0 投票
0 回答
75 浏览

ios - 如何让CAEmitterCell淡入淡出?

我正在使用 CAEmitterLayer 发射一些星图。我们的客户希望将星星的 alpha 从 0 更改为 1 ,然后更改为 0。我知道我们可以使用 CAEmitterCell 的 alphaSpeed 属性来增加或减少 alpha,但是如何更改 alpha 像 0 -> 1 -> 0 ? 非常感谢!

0 投票
0 回答
15 浏览

ios - CAEmitterCell 根本不显示颜色

我在互联网上寻找过这个问题,但找不到与我的问题相关的任何解决方案。

这是我到目前为止编写的代码。

创建 CAEmitterLayer 如下:

创建每个 CAEmitterCell 如下:

我正在使用的图片来自此链接:https ://icons8.com/icon/10276/diamonds

我在这里做错了什么?

0 投票
0 回答
53 浏览

swiftui - 为什么我不能改变 CAEmitterCell 的颜色

为什么我无法更改 CAEmitterCell 的颜色 我在 UIImage 中使用 systemName 参数,我使用在 SFSymbols 中定义的图标。我无法更改 CAEmitterCell 的颜色。我添加了 cgColor 属性,但我的代码仍然不起作用。

使用

粒子效果视图

0 投票
0 回答
32 浏览

ios - 是否可以在屏幕底部收集 CAEmitterCell 对象?

CAEmitterLayer 和 CAEmitterCell 是创建雪花或雨滴等动画的好方法,但是否可以将它们收集在屏幕底部,这样它们就不会消失而留在屏幕上?如果不是,实现这种动画的最佳方法是什么?

0 投票
1 回答
79 浏览

swift - 如何在 macOS 上使用 NSViewRepresentable 在 SwiftUI 应用程序中使用 CAEmitterLayer

我想CAEmitterLayer在基于 SwiftUI 的 macOS 应用程序中使用 a 。

问题:图层本身是完全可见的,但它不发射任何粒子。

→ 这是我在 GitHub 上的演示项目

在此处输入图像描述

我基本上为处理发射器层本身NSViewRepresentable的自定义类构建了一个。EmitterNSView: NSView

我可以清楚地看到应用程序中图层的绿色背景这一事实表明单元格有问题?在这一点上感觉很失落。

工作中非常相似的实现UIKit就好了。

如何CAEmitterLayer在基于 SwiftUI 的应用程序中的 macOS 上使用?