小编D33*_*D33的帖子

CAEmitterLayer如何反复短时间发射

我正在玩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)

core-animation calayer uiview ios caemitterlayer

11
推荐指数
3
解决办法
1万
查看次数

如果网络不可用,Game Center/GameKit报告得分

我正在创建类似于支持Game Center的游戏.当玩家正确认证游戏中心但在我想报告我的分数时网络(wifi或手机)不可用时,我在向排行榜报告得分时遇到问题.

我的应用程序适用于iOS 5.0及更高版本,根据文档 - 排行榜 - 它应该像他们说的那样工作 - 我只使用该功能

- (void)reportScoreWithCompletionHandler:(void (^)(NSError *error))completionHandler and 
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因由于网络错误而无法报告分数,则Game Kit会在网络可用时自动重新发送数据.

但是当我关闭wifi,玩这个游戏并在这个离线模式下报告分数时,我的分数在我重新上线时没有报告!:(与我的成就相同的问题.是否有任何技巧或已知问题?或者此功能仅适用于实时应用而不是测试?

非常感谢你.

leaderboard achievements gamekit ios game-center

5
推荐指数
1
解决办法
944
查看次数