- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 CAEmitterCell 的动画 CAEmitterLayer,动画运行良好
fireEmitter = (CAEmitterLayer*)self.layer;
fireEmitter.emitterPosition = CGPointMake(50, 50);
fireEmitter.emitterSize = CGSizeMake(10, 10);
CAEmitterCell* fire = [CAEmitterCell emitterCell];
...
[fire setName:@"fire"];
CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"emitterPosition"];
anim.path = theBezierPath.CGPath;
anim.calculationMode = kCAAnimationCubicPaced;
anim.repeatCount = HUGE_VALF;
anim.duration = 12.0;
[self.layer addAnimation:anim forKey:@"fire"];
我的贝塞尔曲线路径是闭合的,并在四个位置点中形成一个“8”。使用我的 timerFunction,我尝试每秒获取 CAEmitterLayer 的位置。为此我使用
-(CGPoint)getEmitterPosition
{
return fireEmitter.emitterPosition;
}
在发射器类和
CGPoint emitterPosition = [self.ParticleEmitterView getEmitterPosition];
NSLog(@"%f / %f", emitterPosition.y, emitterPosition.y);
来自定时器函数。
但是当动画运行时,尽管发射器在屏幕上运行,但控制台每次调用都会输出相同的位置。
这是为什么?我如何才能获得动画 CAEmitterLayer/Cell 的发射器位置?
最佳答案
您是否尝试过查询 CAEmitterLayer
的 presentationLayer
属性并询问生成的 CALayer
的位置?表示层应允许您访问该层的属性,因为它们在动画期间出现在屏幕上,而发射器层将为您提供所有当前动画结束时的属性。
这是由于 Core Animation's rendering architecture 中固有的模型- View 分离所致.
关于objective-c - 如何获得动画 CAEmitterLayer/Cell 的发射器位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10885480/
所以我使用 CAEmitterLayer 开发了一个应用程序。最初我让它自动发射(当应用程序加载时,它将开始发射 Spark ),它在模拟器和设备中都工作得很好。 现在,我将其更改为当用户点击屏幕时发
我只想运行一次 CAEmitterLayer,我想停止birthRate,但我做不到。我想要的是它在点击屏幕时只运行一次。我一直在尝试与代表合作,但我无法让它发挥作用。你能告诉我我的代码是否有效。
我有一个 CAEmitterLayer 实例,它发出一些 CAEmitterCells。我想知道,是否可以暂停这一层,这样就不会产生新的 CAEmitterCells 并且已经产生的那些在屏幕上的位置
我只是将 UIView 添加到我的 storyboard view controller,然后创建一个 UIView 类来显示粒子效果。我将 UIView 的 类名称更改为我创建的自定义类的名称。我在
我正在努力创建一个与屏幕高度相同的 CAEmitterLayer,并推离 -X,因此 CAEmitterCells 从左侧(离开屏幕)移动到右上角。 我遇到了一个问题,CAEmitterLayer 的
我有一个 CAEmitterLayer 实例,我想暂停然后恢复多次。 我已经找到了多种使用两个 CAEmitterLayer 扩展函数来实现这一点的方法: public func pause() {
我正在使用 Apple 的 CAEmitterLayer 和 CAEmitterCell 设计一个粒子系统,在 iPhone5 和模拟器上一切都很顺利。但是一旦我在 iPhone4S 上运行它,粒子系
我在 iOS 中使用 CAEmitterLayer 玩粒子系统(就像在 this example 中一样),但我无法在需要时移除粒子。 我正在尝试以下代码,但它不起作用: [self.emitterL
我正在尝试重新创建此效果(请参见下图),但是具有圆形路径,因为我有一个圆形按钮。 这是来源。 https://github.com/uiue/ParticleButton/blob/master/Pa
在 iPad 版 Swift Playgrounds 中,我很难将 CAEmitterLayer 实例永久限制在中心。例如,它保持居中直到设备旋转,因此我需要找到某种方法将其限制在所有设备方向的中心。
我想在用户猜对后制作五彩纸屑效果,我在网上搜索了一些看起来不错的东西,但是它只有.m文件,我不知道如何处理头文件。 This is the link to the page with the Conf
我想在矩形内制作粒子。 这段代码有什么问题?它仅从发射器位置发射,而不是矩形中的随机位置。 fireEmitter = [CAEmitterLayer layer]; [self.view.layer
我已经阅读了一些教程并查看了文档,但我无法让我的 CAEmitterLayer 显示任何粒子。我有一个 CAEmitterLayer 和 CAEmitterCell 属性,它们都具有 nonatomi
我有以下代码,将粒子添加到位于其他一些 UIView 中心的名为 ParentView 的 UIView: CAEmitterLayer *emitterLayer = [CAEmitterLayer
我想创建一个树叶飘落的动画这是我的代码: private func setupEmitter() { let size = self.bounds.size let emitter
我似乎无法解决的奇怪问题仅在 iOS 7 上,当出生率最初设置为非零值时,CAEmitterLayer 会在屏幕上错误地生成粒子.就好像它计算了层在未来的状态。 // Create black ima
我正在尝试设置一个 CAEmitterLayer 来制作五彩纸屑效果,我遇到了两个问题: 每当我将单元格上的 birthRate 设置为非零值以启动动画时,我都会在屏幕上随机放置一系列单元格,这些单元
有什么想法为什么仅使用带有 CAEmitterLayer 子层的普通 ScreenSaverView 子类的屏幕保护程序会在主屏幕上渲染良好并且断断续续(就好像每 2. 帧渲染一样)在那里..)在辅助
我正在尝试为 CAEmitterLayer 的 emitterPosition 设置动画,如下所示: CABasicAnimation *animation = [CABasicAnimation a
我们一直看到的一个非常奇怪的问题(下面的 gif), 我们有一个呈现的 View Controller ,它有一个 TeamBadgeView,这是一个以 CAEmitterCells 形式发出表情符
我是一名优秀的程序员,十分优秀!