• 締切済み

CGRectContainsPoint 一度処理

またこちらで質問させていただきます iPhone Objective-Cに関する質問です CGRectContainsPointで指定したUIButtonの内側にtouchesMovedで動かしている UIImageViewが存在すると指定したcafをAVAudioPlayerで再生させる というコードを書きました しかしこれだと UIButtonの内側で動作があると何回も音声が再生されてしまいます UIButtonのサイズが大きいとUIImageViewがUIButton上を通過 させている間に何回も再生されます これを一度だけ再生させるようにするにはどうすればよいでしょうか? 1.UIButton上に来たら一度だけ再生 2.UIButton上から外れたら一度だけ再生という処理を解除 3.外れた後、UIImageViewをもう一度UIButtonの内側に持ってきたらまた1の処理 このようにしたいです。

みんなの回答

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.1

UIResponderの、UITouchに関するメソッド「touchMoved:」は、指を動かしている間、何度も繰り返し呼び出されるということは、何回も説明していると思います。 AVAudioPlayerクラスのプロパティに、「playing」があって、音楽再生中であるかどうかの判別ができます。 このふたつの事項を知っていれば、あとは条件分岐を使って、あなたなりに考えて、あなたなりにコードを書くだけです。 ※なにかわからないことがあったら、使用しているクラスのリファレンスと、関連のガイドを、Xcodeのヘルプを使って、ざっと見渡すくせを付けてください。なにかつまずくたびに、いちいち質問して、いつ返ってくるか、そもそも返ってくるのかどうかわからない回答を、ぼーっと待っているのは、むだな時間の使い方だと思いませんか? UIResponder Class Reference http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIResponder_Class/ AVAudioPlayer Class Reference http://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioPlayerClassReference/

関連するQ&A