0

効果音の音量を変数で変えようとしています。AVAudioPlayerを使用していて、変数を呼び出して音量を設定していますが、アプリを実行すると、変数の設定に関係なく、まったく音が出ません。(.1-1.0)ただし、AvAudioPlayerブロック(player.volume = .5;)内から番号を設定すると、正常に応答します。私が間違っていることについて何か考えはありますか?

私のコードの例:

@interface

@property (nonatomic) float setVolume;

@implementation
@synthesize setVolume;

float setVolume = .5;

-(void)countdown
{
//play sound
NSString *musicFilePath = [[NSBundle mainBundle] pathForResource:@"Countdown_beep" ofType:@"wav"];
NSURL *musicURL = [[NSURL alloc] initFileURLWithPath:musicFilePath];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:nil];
player.volume = setVolume;
[player play];

ありがとう。:)

編集:

ヘッダーファイルから宣言を削除し、実装内にivarを作成することで、問題を修正しました。

4

1 に答える 1

0

この行は意味がなく、プログラムとは無関係です。

float setVolume = .5;

と呼ばれるプロパティ/ivarをすでに合成していますsetVolume。そうじゃない。したがって、デフォルトでは、プロパティsetVolumeはゼロであり、それを変更するために何もしていないため、音量はゼロになり、音は発生しません。

プロパティの値を設定するには、プロパティの値を設定します。:)たとえば、あなたは言うことができますself.setVolume = .5countdownたとえば、メソッドの早い段階で、または他のメソッドでこれを行うことができます(プロパティのポイントの1つは、このオブジェクトのすべてのメソッドがそれを参照できることです)。

ここで、コードのもう1つの問題は、プロパティ名が「set」で始まることです。これはおそらく悪い考えです。もし私があなたなら、別の名前を選びます。「setX」形式の名前は、インスタンス変数/プロパティXのセッターメソッドの名前としてのみ使用するのが最適です。

于 2012-11-24T23:50:53.830 に答える