问题标签 [caemitterlayer]

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 回答
1588 浏览

objective-c - 如何获取动画 CAEmitterLayer/Cell 的发射器位置?

我有一个带有 CAEmitterCell 的动画 CAEmitterLayer 并且动画运行良好

我的贝塞尔路径是封闭的,并在四个位置点中形成一个“8”。使用我的 timerFunction 我尝试每秒获取 CAEmitterLayer 的位置。为此我使用

在发射器类和

从定时器功能。

但是当动画运行时,控制台每次调用都会吐出相同的位置,尽管发射器在屏幕上运行。

为什么会这样,我怎样才能获得动画 CAEmitterLayer/Cell 的发射器位置?

0 投票
1 回答
500 浏览

objective-c - How to control CAKeyframeAnimation with touch gesture?

I have a CAEmitterLayer animated along a bezier path (closed form, like an '8', out of four control points) with a CAKeyframeAnimation. Now I want to control the animation by a slide of a touch-finger along (but not necessarily on) the path. How is this possible and is this even possible?

0 投票
1 回答
621 浏览

objective-c - 如何用一堆 CAEmitterCells 获得更小的尾巴(淡出和/或缩小)

我有一个沿 bezierPath 动画的 CAEmitterLayer,我的 CEEmitterCell 粒子是用部分透明的 gaused-circle.png 制成的。这些粒子的生命周期为 0.3,这导致了我的动画 CAEmitterLayer-Particles 的小尾巴。我需要让尾部在最后变得更小,并让细胞在整个生命周期内淡出到 alpha = 0。我尝试了不同的参数设置组合,但无法正常工作。我只是把尾巴的末端变胖了,看起来很丑。请问,这里有哪些必要的参数设置?CAEmitterCells 甚至可以做到这一点吗?

0 投票
6 回答
11353 浏览

ios - CAEmitterLayer如何在短时间内重复发射

我正在玩 CAEmitterLayer,现在我遇到了一些问题:(

例如,我需要一个短粒子效果——比如撞击或爆炸——在一个地方(所以我在这个地方有一个小的 UIView)。我该怎么做?

1,我有一个想法——用它的粒子创建emitterLayer并将lifeTime设置为0。例如,当我需要它时,我将lifeTime设置为1,过了一会儿我可以将它设置回0。 - 但它没有做任何事情:(

2、第二个想法是每次需要时都创建[CAEmitterLayer layer]并将其添加为layers sublayer。但是我在想当我重复它十次时会发生什么……我有 10 个子层,其中一个活跃,9 个“死”?一般如何停止发射?一段时间后我有 performSelector 将生命周期设置为 0 和其他具有更长间隔的选择器来 removeFromSuperlayer ......但它并不像我想要的那样漂亮:( 还有另一种“正确”的方式吗?

我认为子层太多与我的另一个问题有关……我只想发射一个粒子。当我这样做时,它会起作用。但有时它会发出三个粒子,有时是两个……这让我很生气。当我不停止发射器时,它每次都会给出正确数量的粒子......

所以问题...</p>

如何在短时间内发射粒子。如何使用它们 - 比如停止,从父层移除,......如何发射精确数量的粒子

编辑:

然后在与按钮链接的方法中,我这样做:

更改为@David Rönnqvist 态度后已编辑和更新

0 投票
1 回答
596 浏览

objective-c - Touches Moved CAEmitterLayer 在触摸点后的实例中延迟...

我从一个问题跌跌撞撞地遇到了另一个问题:解决了第一个问题,现在当手指在屏幕上移动时,我的粒子轨迹被延迟到触摸位置之后。

当我通过覆盖初始化 CAEmitterLayer 时效果很好

和初始化

我把它改成了

现在发射器单元像艺妓一样在远处跟随移动的接触点

这是为什么?因为我改变了发射器现在发射的层?请帮忙!谢谢

0 投票
1 回答
1109 浏览

iphone - 改进/优化 CAEmitterLayer 动画的性能(沿路径发射?)

这是我到目前为止所获得的视频。恕我直言,我的 MBP + QuickTime + Xcode 不是最好的。

http://www.youtube.com/watch?v=DGRwz7n3kNA

这是我想要的一个非常粗略的草稿,但你可以得到这个想法。性能是最大的问题,但除了性能之外,我还在浪费 CPU/GPU 时间渲染/计算UIImageView背后的粒子(看起来像恶魔的符文)。

有谁知道如何沿着路径发射粒子或更好的方法来获得视图后面的发光动画?这是设置动画的发射器视图的片段:

0 投票
3 回答
2991 浏览

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

我正在尝试设置一个CAEmitterLayer来制作五彩纸屑效果,我遇到了两个问题:

  1. 每当我将birthRate单元格上的设置为非零值以启动动画时,我会在屏幕上随机放置一系列单元格,这些单元格可以正常动画,然后发射器在此之后继续正常发射。
  2. 每当emitterCells在屏幕上绘制东西时,每当我触摸屏幕时,发射器emitterCells都会在(看似)随机的位置(看似)存在(看似)随机的时间量。发射器中的任何内容都与任何触摸事件无关(即我不是故意在触摸事件上绘制任何内容),但该层位于具有多个嵌入式视图的视图中。我接触的越多,出现的细胞就越多。

这是我设置发射器的代码,然后启动和停止它(一旦我调用了停止函数,然后点击屏幕停止创建新的随机元素):

开始五彩纸屑:

并阻止它:

同样,一旦它开始,在最初的随机元素之后,它工作得很好:一切正常动画,当birthRate稍后设置为零时,它优雅地结束。它似乎只是响应触摸事件,我不知道为什么。我尝试将emitterLayer 添加到不同的视图,禁用该视图上的用户交互,然后将其添加为主视图的子视图,但这似乎不起作用。

任何帮助/见解将不胜感激!

谢谢,山姆

0 投票
2 回答
20010 浏览

performance - UIView self.layer.shouldRasterize = YES 和性能问题

我想分享我self.layer.shouldRasterize = YES;在 UIViews 上使用标志的经验。

我有一个UIViewself.layer.shouldRasterize打开的类层次结构以提高滚动性能(它们都具有大于设备屏幕的 STATIC 子视图)。

今天在我用来CAEmitterLayer制作漂亮粒子效果的一个子类中。

尽管粒子数非常低(50 个粒子) ,但性能确实很差

这个问题的原因是什么?

0 投票
1 回答
1583 浏览

objective-c - iOS:在屏幕上捕获 CAEmitterLayer 粒子

在捕获 ios 设备屏幕时,有没有办法捕获 CAEmitterCells(使用 CAEmitterLayer 生成)?
UIGetScreenImage()有效,但由于它是私有方法,因此我不允许使用它。
UIGraphicsBeginImageContext似乎不起作用,粒子只是从生成的图像中省略了。

编辑: 这是我目前用来捕获视图的代码。实际上,我正在使用 aroth 在此处提供的代码录制一段 30 秒长的屏幕视频。它的工作原理是每秒记录 25 个自身的图像(它的 UIView 子类)及其子视图(在我们的例子中包括层是 CAEmitterLayer 的 UIView),并使用 AVAssetWriter 来组合记录。

非常拗口,所以我将相关行放在这里:我使用 XCode 中的 ARC 工具对代码进行了 ARC 编辑,因此代码在内存管理方面可能有点不同。

真的希望这会有所帮助。谢谢你的支持!

0 投票
2 回答
1109 浏览

ios - 调用超级层的 -renderInContext: 时 CAEmitterLayer 不渲染

我有一个绘图应用程序,我希望我的用户能够使用粒子效果作为他们绘图的一部分。基本上,该应用程序的重点是执行自定义绘图并保存到相机胶卷或通过万维网共享。

我最近遇到了这CAEmitterLayer门课,我认为这将是一种添加粒子效果的简单有效的方法。

我已经能够使用该CAEmitterLayer实现在应用程序的屏幕上绘制粒子。所以在屏幕上渲染效果很好。

当我开始使用渲染绘图的内容时

我认为正在发生的事情

CAEmitterLayer处于“动画”粒子的恒定状态。这就是为什么当我尝试渲染图层时(我也尝试过渲染layers.presentationLayer模型图层),动画永远不会提交,因此屏幕外图像渲染不包含粒子。

问题 有没有人渲染过CAEmitterLayer屏幕外的内容?如果是这样,你是怎么做到的?

替代问题 有谁知道任何不使用 OpenGL 且不是 Cocos2D 的粒子效果系统库?