我正试图通过变量改变音效的音量。我正在使用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来解决问题。
答案 0 :(得分:0)
这条线毫无意义,与你的程序无关:
float setVolume = .5;
您已经在合成名为setVolume
的属性/ ivar。这不是它。因此,默认情况下,您的属性setVolume
为零,并且您无需更改,因此音量最终为零并且没有声音发生。
要设置属性的值,请设置属性的值。 :)例如,您可以说self.setVolume = .5
。例如,您可以在countdown
方法中执行此操作,或者使用其他方法(属性的一个点是此对象的所有方法都可以看到它)。
现在,您的代码的另一个问题是您的属性名称以“set”开头。这可能是一个坏主意。如果我是你,我会选择另一个名字。 “setX”形式的名称最好仅用作实例变量/属性X的setter方法的名称。