0

マルチタッチについて質問があります

これは .m ファイルのコードの一部です

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
CGPoint pt = [touch locationInView:self.view];

if(pt.x>634 && pt.x<733 && pt.y >64 && pt.y<145)
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"si" ofType:@"mp3"];
    theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];
}

if(pt.x>634 && pt.x<733 && pt.y >195 && pt.y<276)
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"la" ofType:@"mp3"];
    theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];
}


-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"rest" ofType:@"mp3"];
    theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];
}

これが機能することを願っています。

実際には、2 番目の "if ((範囲) &&(範囲))" の部分が機能しません。誰でも解決策を教えてもらえますか?

最初の範囲は機能し、2 番目の範囲で「la.mp3」を再生したいのですが、2 本の指がタッチダウンしても音楽が再生されません。

4

2 に答える 2

1

申し訳ありませんが、最後の回答を削除できないため、これは回答の完全な編集になります。大きな読み間違いをしたので、新しい回答を書く必要があります。[touches anyObject]マルチタッチシステムで必要なタッチが確実に得られないため、 使用しないでください。

[[touches allObjects] objectAtIndex:#]タッチを抽出するために使用する必要があります。タッチは、来た順に表示されます。

于 2012-05-08T05:54:29.200 に答える
0

MultiTouch Events のドキュメントを読み直す必要があります。まず、ビューの multipleTouchEnabled プロパティを YES に設定する必要があります。第二に、設定しているように、毎回1回のタッチイベントしか取得していません

UITouch *touch = [touches anyObject];   

代わりに試してください

for (UITouch * touch in touches) {

現在のセットの各タッチでコードを実行します。

次に、TouchDidBegin の終了時に AVAudioPlayer が解放されることを懸念しています。これにより、残りの再生がキャンセルされると思います。それはおそらくプロパティである必要があります。また、AVAudioPlayer は一度に 1 つのオーディオ トラックしか再生できないため、2 つの異なるトラックをぶらぶらさせたいと思うでしょう。

別の(より良い)代替手段は、タッチを完全に捨てて、ボタンだけを使用することです。ボタンが押されたとき (ノートの開始) とボタンが離されたときに通知を受け取ることができます (どのボタンがまだ押されているかを追跡し、最後に押された場合は「rest.mp3」を再生します)。 )。

于 2012-05-08T06:05:13.170 に答える