3

こんにちは、私はカカオ初心者で、これが私の最初の投稿です:P

私は非常に単純なリズムゲームを作ろうとしていますが、行き詰まります.これが私が得たものです:

/**** TouchView.h/m ****/
@property AVAudioPlayer *audioPlayer;

[self addObserver:self 
       forKeyPath:@"audioPlayer.currentTime" 
          options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)
          context:NULL];

//audioPlayer.currentTime's type is NSTimeinterval (double)

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change (NSDictionary *)change context:(void *)context
{
   NSLog(@"action triggered!")
}

これは機能しません(audioPlayerを適切に初期化しましたが、サウンドを再生できますが、 currentTime 値が変更されたときにキャッチできません)

これらのコードを別のプロパティ "double testNumber" でテストし、それを "keyPath" の引数として設定し、画面に触れたときに値を 1 増やしてから、うまくいきました。しかし、audioPlayer.currentTime を監視できるようにするにはどうすればよいですか。この値が変更されたときに通知を受け取りたいだけです。他のアドバイスもいただければ幸いです。私はあなたを頼りにしています、助けてください、ありがとう:)

4

1 に答える 1

1

どうですか:

[audioPlayer addObserver:self
              forKeyPath:@"currentTime"
                 options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)
                 context:NULL];

ただし、オブジェクトを本当にKVCに準拠させたい場合(これは、使用しようとしているものです)、このテーマに関するAppleのガイドに従う必要があります。

クラスが特定のプロパティに対してKVC準拠であると見なされるには、valueForKey:およびsetValue:forKey:がそのプロパティで機能するために必要なメソッドを実装する必要があります。

于 2012-12-04T13:39:23.930 に答える