1

私のアプリには、オプションページがあります。変更できるものは3つあります。反転コントロール用のスイッチ(シューティングゲームです)、エフェクトレベル用のボリュームスライダー、音楽レベル用のボリュームスライダーです。私はいくつかのことで助けが必要です。私はObjectiveCを初めて使用し(3週間)、NSUserDefaultsの保存についてサポートが必要です。ボリュームスライダーのコードはありますが、機能していません。私はまた、スイッチについて何をすべきかについての手がかりを持っていません。ゲームの後半でもこのデータを確認する必要があります。これが私が試したコードですOPTIONS.m

-(IBAction)musicVolumeChanged {

    NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
    NSString *musicVolume = musicVolumeSlider.value;
    //theAudio.volume = musicVolume;
    [userPreferences setObject:musicVolume forKey:@"musicVolume"];
}

-(IBAction)effectsVolumeChanged {

    NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
    NSString *effectsVolume = effectsVolumeSlider.value;
    //theAudio.volume = effectsVolume;
    [userPreferences setObject:effectsVolume forKey:@"effectsVolume"];

}

そして、ゲーム中に値にアクセスするために、私は持っています:Igunner.m

NSString *effects_Volume = [[NSUserDefaults standardUserDefaults]
                                             stringForKey:@"effectsVolume"];
theAudio.volume = effects_Volume;
[theAudio play]; 

そして、私が持っている音楽のボリュームについては:

NSString *music_Volume = [[NSUserDefaults standardUserDefaults]
                                             stringForKey:@"musicVolume"];
theAudio.volume = music_Volume;
[theAudio play];

上記の各サンプルコードに1つのエラーがあります。NSUserDefaultsに値を割り当てると、文字列にスライダー値を割り当てるときにエラーが発生します。「初期化の互換性のない型」、および値を取得するために「setVolumeの引数1の互換性のない型」というエラーが発生します。

私が間違っていることを教えてください。ご存知の場合は、スイッチの状態が保存および取得されるのを手伝ってください。

4

2 に答える 2

1

これを試して

NSString *effectsVolume = [NSString stringWithFormat:@"%f",effectsVolumeSlider.value];

slider.value戻り値を記憶floatしているため、文字列に直接割り当てることはできません。これにより、値をユーザーのデフォルトに割り当てることに関する問題が解決されます

于 2011-03-10T12:26:21.463 に答える
0

ここで float を string にキャストする必要があります。

NSString *musicVolume = musicVolumeSlider.value;

そこで、文字列を float にキャストする必要があります

theAudio.volume = music_Volume;

または使用

[[NSUserDefaults standardUserDefaults]setFloat:musicVolume forKey:@"musicVolume"];

文字列のインスタンス

于 2011-03-10T12:24:28.813 に答える