我正在玩CAEmitterLayer,我现在面临一些问题:(
我需要一个短的粒子效果 - 比如击中或爆炸 - 例如在一个地方(所以我在这个地方有小UIView).我该怎么办?
1,我有一个想法 - 使用它的粒子创建emitterLayer并将lifeTime设置为0.当我需要它时,我将lifeTime设置为1,一段时间后我可以将其设置为0. - 但是它没有做任何事情:(
2,第二个想法是每次需要时创建[CAEmitterLayer图层]并将其添加为图层子图层.但是我在想,当我重复十次时会发生什么......我有10个子层,一个有效,9个"死"?如何停止一般发射?我有一段时间后执行performSelector将生命周期设置为0,其他选择器的间隔时间更长,以删除.FromSuperlayer ...但它不是那么漂亮我想拥有它:(还有另一种"正确"方式吗?
我认为太多的子层与我的另一个问题有关...我想只发射一个粒子.当我这样做时,它有效.但有时候它发出三颗粒子,有时两粒......这让我很生气.当我不停止发射器时,它每次给出正确数量的粒子......
所以问题......
如何在短时间内发射粒子.如何使用它们 - 比如停止,从父层移除,...如何发出准确数量的粒子
编辑:
emitter = [CAEmitterLayer layer];
emitter.emitterPosition = CGPointMake(self.view.bounds.size.width/2, self.view.bounds.size.height/2);
emitter.emitterMode = kCAEmitterLayerPoints;
emitter.emitterShape = kCAEmitterLayerPoint;
emitter.renderMode = kCAEmitterLayerOldestFirst;
emitter.lifetime = 0;
particle = [CAEmitterCell emitterCell];
[particle setName:@"hit"];
particle.birthRate = 1;
particle.emissionLongitude = 3*M_PI_2;//270deg
particle.lifetime = 0.75;
particle.lifetimeRange = 0;
particle.velocity = 110;
particle.velocityRange = 20;
particle.emissionRange = M_PI_2;//PI/2 = 90degrees
particle.yAcceleration = 200;
particle.contents = (id) [[UIImage imageNamed:@"50"] CGImage];
particle.scale = 1.0; …Run Code Online (Sandbox Code Playgroud) 我正在创建类似于支持Game Center的游戏.当玩家正确认证游戏中心但在我想报告我的分数时网络(wifi或手机)不可用时,我在向排行榜报告得分时遇到问题.
我的应用程序适用于iOS 5.0及更高版本,根据文档 - 排行榜 - 它应该像他们说的那样工作 - 我只使用该功能
- (void)reportScoreWithCompletionHandler:(void (^)(NSError *error))completionHandler and
Run Code Online (Sandbox Code Playgroud)
和
如果由于某种原因由于网络错误而无法报告分数,则Game Kit会在网络可用时自动重新发送数据.
但是当我关闭wifi,玩这个游戏并在这个离线模式下报告分数时,我的分数在我重新上线时没有报告!:(与我的成就相同的问题.是否有任何技巧或已知问题?或者此功能仅适用于实时应用而不是测试?
非常感谢你.