- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这是我在 CCTouchesMoved 中用于在触摸位置产生粒子效果的代码。但是当触摸移动时使用这个 FPS 下降到 20!我试过降低粒子的生命周期和持续时间(你可以在代码中看到)......
如何解决在使用粒子效果时移动触摸时 FPS 降低的问题???
- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
swipeEffect = [CCParticleSystemQuad particleWithFile:@"comet.plist"];
//Setting some parameters for the effect
swipeEffect.position = ccp(location.x, location.y);
//For fixing the FPS issue I deliberately lowered the life & duration
swipeEffect.life =0.0000000001;
swipeEffect.duration = 0.0000000001;
//Adding and removing after effects
[self addChild:swipeEffect];
swipeEffect.autoRemoveOnFinish=YES;
}
请帮帮我……我尝试了不同的粒子并尽量减少了生命周期和持续时间,但没有成功!对此有什么新想法吗?或修复我所做的事情?
最佳答案
我高度怀疑速度变慢的原因是每次触摸移动时您都在实例化一个新的 CCParticleSystemQuad。为什么不在 init
或 ccTouchesBegan
方法中实例化一次,而只在 ccTouchesMoved 中设置位置和发射率:
- (id)init {
...
swipeEffect = [CCParticleSystemQuad particleWithFile:@"comet.plist"];
swipeEffect.emissionRate = 0;
[self addChild:swipeEffect];
...
}
- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
swipeEffect.emissionRate = 10;
}
- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
swipeEffect.position = location;
}
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
swipeEffect.emissionRate = 0;
}
关于iphone - 在 CCTouchesMoved 中使用 Cocos2D 粒子效果时 FPS 降低问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5561531/
我有一个乒乓球游戏,我用手指来移动 Racket 。只要有一根手指,一切都会顺利进行。但是,当我想控制两个玩家、两个 Racket 时,一个 Racket 移动得很好,但另一个 Racket 移动得很
大家好,我是 COCOS2DX 框架的新手,正在尝试开发打砖 block 游戏。我正在关注这个演示 Brick breker game本教程在 cocos2d (iPhone) 中。我在 cocos2
self.isTouchEnabled = YES; 当然在init方法中。 -(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)
所以我得到了这个工作: -(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *myTouc
我的代码: -(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { //Add a new body/atla
这是我在 CCTouchesMoved 中用于在触摸位置产生粒子效果的代码。但是当触摸移动时使用这个 FPS 下降到 20!我试过降低粒子的生命周期和持续时间(你可以在代码中看到)...... 如何解
我是一名优秀的程序员,十分优秀!