所以我有点背景故事。我想实现一个粒子效果和声音效果,当用户摇动他们的 iDevice 时,它们都会持续大约 3 秒左右。但是当 UIEvent 中的奶昔构建拒绝工作时,第一个问题就出现了。所以我听取了一些 Cocos 资深人士的建议,只是使用一些脚本来获得“暴力”加速度计输入作为震动。到现在为止工作得很好。
问题是,如果你一直摇晃它,它只会一遍又一遍地堆积粒子和声音。现在这不是什么大不了的事,除非即使你小心翼翼地尝试而不这样做,它也会发生。所以我希望做的是在粒子效果/声音效果开始时禁用加速度计,然后在它们完成后立即重新启用它。现在我不知道我是否应该按计划、NStimer 或其他一些功能来执行此操作。我愿意接受所有建议。这是我目前的“摇”代码。
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
const float violence = 1;
static BOOL beenhere;
BOOL shake = FALSE;
if (beenhere) return;
beenhere = TRUE;
if (acceleration.x > violence * 1.5 || acceleration.x < (-1.5* violence))
shake = TRUE;
if (acceleration.y > violence * 2 || acceleration.y < (-2 * violence))
shake = TRUE;
if (acceleration.z > violence * 3 || acceleration.z < (-3 * violence))
shake = TRUE;
if (shake) {
id particleSystem = [CCParticleSystemQuad particleWithFile:@"particle.plist"];
[self addChild: particleSystem];
// Super simple Audio playback for sound effects!
[[SimpleAudioEngine sharedEngine] playEffect:@"Sound.mp3"];
shake = FALSE;
}
beenhere = FALSE;
}