大佬教程收集整理的这篇文章主要介绍了ios – 来自CAEmitterLayer的初始粒子不会从emitterPosition开始,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如何禁用或解决此问题?当我增加birthRate时,我只希望粒子从emitterPosition开始出现,而不是沿着CAEmitterCell的预计生命周期的所有点开始.任何帮助表示赞赏.
#import "EmitterView.h" @interface EmitterView () @property CAEmitterLayer* emitter; @end @implementation EmitterView - (void) awakeFromNib { [super awakeFromNib]; self.emitter = (CAEmitterLayer*)self.layer; CAEmitterCell* sNowflake = [CAEmitterCell emitterCell]; sNowflake.contents = (id)[[UIImage imagenamed: @"sNowflake"] CGImage]; sNowflake.lifetime = 3; sNowflake.birthRate = 1; sNowflake.veLocity = 50; sNowflake.emissionRange = 3.1415; self.emitter.birthRate = 0; self.emitter.emitterCells = [NSArray arrayWithObject: sNowflake]; self.emitter.emitterPosition = CGPointMake(100,100); self.emitter.emitterSize = CGSizeMake(0,0); self.emitter.emitterShape = kCAEmitterLayerPoint; } + (Class) layerClass { return [CAEmitterLayer class]; } - (void) burst { self.emitter.birthRate = 10; dispatch_after(dispatch_time(DISPATCH_TIME_Now,0.1 * NSEC_PER_SEC),dispatch_get_main_queue(),^{ self.emitter.birthRate = 0; }); } @end
我于2013年8月28日针对此问题提交了一个错误,该错误已作为同一问题的另一个错误报告的副本而关闭.苹果公司的臭虫记者报道说,另一个漏洞仍然是开放的,这意味着苹果还没有解决它,尽管超过一年半的时间来处理它.
我建议您向Apple提交自己的错误报告,为他们提供一个简单的应用程序来演示行为,并且可能会重新关注它将有助于他们对此做些什么.
编辑:
self.emitter.beginTime = CACurrentMediaTime();
重要的是要知道CAEmitterLayer是CALayer的子类,它符合CAMediaTiming协议.为什么这整个事实没有更好的记录是超出我的.
请注意,你可能想从你的 – (void)burst方法中调用它,但如果你在很短的时间内再次调用它,而之前的粒子仍然存在,你可能会看到一些奇怪的行为,因为重置了beginTime .
以上是大佬教程为你收集整理的ios – 来自CAEmitterLayer的初始粒子不会从emitterPosition开始全部内容,希望文章能够帮你解决ios – 来自CAEmitterLayer的初始粒子不会从emitterPosition开始所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。