【发布时间】:2013-11-30 07:03:27
【问题描述】:
我正在 cocos2d 中制作一个简单的游戏,我想制作一个简单的按钮切换来保持声音的开启或关闭。这就是我到目前为止所做的......
在我的.h:
CCMenuItemImage *sound;
CCMenu *menu2;
在我的init:
[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"musicon"];
// Sound Buttons
sound = [CCMenuItemImage itemWithNormalImage:@"music.png" selectedImage:@"music.png" target:self selector:@selector(turnOffSound)];
sound.scale = 1.1;
menu2 = [CCMenu menuWithItems:sound, nil];
menu2.position = ccp(screenCenter.x - 33,screenCenter.y / 5);
[self addChild:menu2];
然后是我的turnOffSound 和turnOnSound 方法:
-(void) turnOnSound {
[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"musicon"];
[self removeChild:sound cleanup:YES];
[self removeChild:menu2 cleanup:YES];
sound = [CCMenuItemImage itemWithNormalImage:@"music.png" selectedImage:@"music.png" target:self selector:@selector(turnOffSound)];
sound.scale = 1.1;
menu2 = [CCMenu menuWithItems:sound, nil];
menu2.position = ccp(screenCenter.x - 33,screenCenter.y / 5);
[self addChild:menu2];
}
-(void) turnOffSound {
[[NSUserDefaults standardUserDefaults] setBool:FALSE forKey:@"musicon"];
[self removeChild:sound cleanup:YES];
[self removeChild:menu2 cleanup:YES];
sound = [CCMenuItemImage itemWithNormalImage:@"music-not.png" selectedImage:@"music-not.png" target:self selector:@selector(turnOnSound)];
sound.scale = 1.1;
menu2 = [CCMenu menuWithItems:sound, nil];
menu2.position = ccp(screenCenter.x - 33,screenCenter.y / 5);
[self addChild:menu2];
}
现在,切换只在这个屏幕(这是标题屏幕)上有效,因为当我转到另一个屏幕,然后返回标题屏幕时,BOOL 再次被设置为 true。你知道我怎样才能让它不再重置吗?感谢您的帮助,谢谢!
【问题讨论】:
-
尝试同步到 NSUserDefault。
标签: ios iphone objective-c cocos2d-iphone