だから私は少し裏話。ユーザーがiDeviceを振ったときに両方とも約3秒続くパーティクルエフェクトとサウンドエフェクトを実装したかったのです。しかし、シェイク用のUIEventのビルドが機能しなかったときに、最初の問題が発生しました。そこで、私は数人のココスのベテランのアドバイスを受けて、スクリプトを使用して「暴力的な」加速度計の入力を揺れとして取得しました。今までうまくいきました。
問題は、振とうし続けると、粒子が積み重なって何度も鳴るということです。これは、注意深く試みて、そうしない場合でも発生することを除いて、それほど大きな問題にはなりません。ですから、私が望んでいるのは、パーティクルエフェクト/サウンドエフェクトの開始時に加速度計を無効にし、終了したらすぐに再度有効にすることです。これをスケジュール、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;
}