来自变量的AVAudioPlayer卷

时间:2012-11-24 23:26:33

标签: iphone objective-c ios

我正试图通过变量改变音效的音量。我正在使用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来解决问题。

1 个答案:

答案 0 :(得分:0)

这条线毫无意义,与你的程序无关:

float setVolume = .5;

您已经在合成名为setVolume的属性/ ivar。这不是它。因此,默认情况下,您的属性setVolume为零,并且您无需更改,因此音量最终为零并且没有声音发生。

要设置属性的值,请设置属性的值。 :)例如,您可以说self.setVolume = .5。例如,您可以在countdown方法中执行此操作,或者使用其他方法(属性的一个点是此对象的所有方法都可以看到它)。

现在,您的代码的另一个问题是您的属性名称以“set”开头。这可能是一个坏主意。如果我是你,我会选择另一个名字。 “setX”形式的名称最好仅用作实例变量/属性X的setter方法的名称。