2012-02-29 4 views
0

ユーザーがオブジェクトを移動させると、移動が終了するとディスプレイが更新され、サウンドが再生されます。それはすべてうまくいきますが、ビューが最初にロードされたときにサウンドが再生されることは望ましくありません。これをどうしたらいいのでしょうか? viewDidLoadに何かを配置する必要がありますか?イベントを発生させるコードは次のとおりです。助けてくれてありがとう。 `ビューの読み込み時にサウンドが再生されないようにしたい

// Updates the text field with the current rotation angle and play sound. 
- (void) updateTextDisplay 
{ 
NSError *error = nil; 
if (imageAngle >=0 && imageAngle <=180){ 
    ComplimentPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"nice" ofType:@"m4a"]] error:&error]; 
    ComplimentPlayer.delegate = self; 
      textDisplay.text = [NSString stringWithFormat:@"blah blah blah"]; 
} else if (imageAngle >180 && imageAngle <=360){ 
    ComplimentPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] 
     pathForResource:@"good" ofType:@"m4a"]] error:&error]; 
    ComplimentPlayer.delegate = self; 
      textDisplay.text = [NSString stringWithFormat:@"blah blah"]; 
} 
NSTimeInterval playbackDelay = 0.5; 
[ComplimentPlayer playAtTime: ComplimentPlayer.deviceCurrentTime + playbackDelay]; 

} `

答えて

1

別のupdateTextDisplayメソッドを追加したときにビューが最初にロード)(playUpdateTextSoundを呼び出すことはありません。 コールupdateTextDisplay()の後にplayUpdateTextSound()を呼び出す

+0

ありがとう私はそのショットを与えるでしょう。 – mmoore410

1

EDIT:全景リロードまたはちょうどUILabelしていますか?

ビューが最初にロードされるときにチェックするためのint値を設定し、ユーザーのデフォルト値に値を格納し、ビューのリロード時に値を更新します。その後、サウンドを再生するときにifロジックでさらに比較を行います。あなたのAppDelegateでviewWillAppear

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];//Add this or make it an ivar 
int a = 0; 
int b = ++a; //set int to add 1 to itself 
[defaults setInteger:b forKey:@"viewNumber"]; 
[[NSUserDefaults standardUserDefaults]synchronize]; 



    - (void) updateTextDisplay 
    { 
NSError *error = nil; 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; //Add this or make it an ivar 
if (imageAngle >=0 && imageAngle <=180 && [defaults [email protected]"viewNumber" >=2) //Add this here 
{ 
ComplimentPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:   [[NSBundle mainBundle] pathForResource:@"nice" ofType:@"m4a"]] error:&error]; 
ComplimentPlayer.delegate = self; 
     textDisplay.text = [NSString stringWithFormat:@"blah blah blah"]; 
    } else if (imageAngle >180 && imageAngle <=360 && [defaults [email protected]"viewNumber">=2) //Add this here 
{ 
ComplimentPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] 
    pathForResource:@"good" ofType:@"m4a"]] error:&error]; 
ComplimentPlayer.delegate = self; 
     textDisplay.text = [NSString stringWithFormat:@"blah blah"]; 
} 
NSTimeInterval playbackDelay = 0.5; 
    [ComplimentPlayer playAtTime: ComplimentPlayer.deviceCurrentTime + playbackDelay]; 

は二つの方法

- (void) updateTextDisplay; 
- (void) playUpdateTextSound; 

- (void)applicationWillTerminate:(UIApplication *)application 
{ 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setInteger:0 forKey:@"viewNumber"]; //this restores the value to 0 upon termination 
[[NSUserDefaults standardUserDefaults]synchronize]; 
    } 
+0

ビューを最初にロードすると、デフォルトの位置は12:00になり、ラベルにはその位置のテキストが表示されます。サウンドファイルも再生され、ユーザーが初めてポジションを変更するまで、サウンドファイルは再生されません。もっと具体的にすべきだったのは残念です。ありがとう。 – mmoore410

関連する問題