1

かなり基本的な質問があります。UIImageView画面にいくつかの画像があります。ボタンをクリックすると、各画像を別の画像に変更したいと思います。また、画像が変わるたびに音を鳴らしたいです。

ですから、基本的には画像が変わるたびにカチッという音がしたいです。

問題は、どういうわけか、私が5つの画像を言った場合
、最初にサウンドが5回再生され、次に画像が変化することです。

これは、コントロールが入力のためにユーザーに戻ったときにのみ画像が更新されるようなものです。

表示する画像を指定したらすぐに画像を更新するように「強制」するにはどうすればよいですか?

私はiphone/macworldに慣れていないので、気楽にやってください:-)

リック

4

4 に答える 4

1

UIImageViewを定期的に更新する方法を探している場合は、以下を参照できます:http: //www.shanison.com/2010/12/25/uiimageview-load-remote-image/

于 2010-12-25T03:40:30.340 に答える
0

サウンドを非同期で再生しているときに、おそらくディスクまたはネットワークからイメージをロードしているようです。おそらくあなたはAudioServicesPlaySystemSound一緒に使用していUIImage +imageWithContentsOfURL:ますか?ここでは、実際の画像の読み込みとサウンドの再生コードが最も役立ちます。

于 2009-06-17T14:07:04.593 に答える
0

これは、uiimageview の背景を変更して更新し、その後もコードの実行を継続したいときにうまくいきました。

-(void)imgTapped_event:(UIImageView*)imgViewTapped
{
     imgViewTapped.backgroundColor=[UIColor whiteColor];

     //let the system update ui changes
     [NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.0f]];

     //continue your code execution, play sounds etc...

     //my helper method to play sound
     [self playSound:@"goodAnswer" sync:YES loops:0]; 
 }
于 2011-10-14T14:07:56.910 に答える
0

コントロールが入力のためにユーザーに戻ったときにのみ画像が更新されるようなものです。

それはまさに何が起こるかです。UI はメイン スレッドで更新されるため、コードの実行中に更新は行われません。

目的を達成するには、タイマーが必要です。NSTimer のドキュメントを見てください。2 番目の画像を変更するメソッドを起動するタイマーを作成してから、3 番目の画像を変更するタイマーを再度キューに入れる必要があります。必要に応じてタイマーを作成する便利な方法があります。+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

[NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage2:) userInfo:nil repeats:NO];

次に、メソッドがあります:

- (void) updateImage2(NSTimer*)theTimer
{

     //Update image 2 here
     // play sound 2 here

    [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage3:) userInfo:nil repeats:NO];
}

メソッド updateImage3 の実装はあなたに任せます: ;-)

このように更新を実行すると、メイン スレッドに UI を更新する機会が与えられます。

于 2009-06-17T14:09:31.077 に答える