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;

您已经在合成一个名为setVolume. 这不是。因此,默认情况下,您的属性setVolume为零,并且您没有做任何更改,因此音量最终为零并且没有声音发生。

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

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

于 2012-11-24T23:50:53.830 回答