2011-12-16 3 views
-1
#import "HelloWorldLayer.h" 
#import "Player.h" 
#import "MyObject.h" 
//#import "SettingsManager.h" 

// HelloWorldLayer implementation 
@implementation HelloWorldLayer 
@synthesize myObject,newPlayer; 

+(CCScene *) scene 
{ 
    // 'scene' is an autorelease object. 
    CCScene *scene = [CCScene node]; 

    // 'layer' is an autorelease object. 
    HelloWorldLayer *layer = [HelloWorldLayer node]; 

    // add layer as a child to scene 
    [scene addChild: layer]; 

    // return the scene 
    return scene; 
} 

// on "init" you need to initialize your instance 
-(id) init 
{ 
    // always call "super" init 
    // Apple recommends to re-assign "self" with the "super" return value 
    if((self=[super init])) { 
     usrDef = [NSUserDefaults standardUserDefaults]; 
     //CGSize 
     CGSize winSize = [[CCDirector sharedDirector]winSize]; 
     //settingsmangaer 
     //myValue = [[SettingsManager sharedSettingsManager] getInt:@"hiscore"]; 

     //child 
     newPlayer = [[Player alloc]init]; 
     [self addChild:newPlayer]; 
     CCMenuItem *myMenuItem = [CCMenuItemImage itemFromNormalImage:@"Button0000.png" selectedImage:@"Button0001.png" target:self selector:@selector(buttonPressed:) ]; 
     CCMenu *myMenu = [CCMenu menuWithItems:myMenuItem, nil]; 
     myMenu.position = ccp(50, 50); 
     [self addChild:myMenu]; 
     //cclabel 
     myValue = [usrDef integerForKey:@"difficulty"]; 
     myLabel = [CCLabelTTF labelWithString:[NSString stringWithFormat:@"Hello: %d",myValue] fontName:@"Arial" fontSize:50]; 
     [myLabel setColor:ccBLACK]; 
     // [myLabel setCString:@"hihi: %d",myValue]; 
     myLabel.position = ccp(winSize.width/2,winSize.height/2); 
     [self addChild:myLabel]; 

    } 

    return self; 
} 

У меня есть кнопка для добавления 1 к myValue при нажатии и сохранения его в nsdefaults.NSUserDefaults in cocos2d не работает

-(void)buttonPressed:(id)sender{ 
    myValue +=1; 
    [myLabel setString:[NSString stringWithFormat:@"Hihi: %d",myValue]]; 
    [usrDef setInteger:myValue forKey:@"diffculty"]; 
    [usrDef synchronize]; 
} 

// on "dealloc" you need to release all your retained objects 
- (void) dealloc 
{ 
    // in case you have something to dealloc, do it in this method 
    // in this particular example nothing needs to be released. 
    // cocos2d will automatically release all the children (Label) 

    // don't forget to call "super dealloc" 
    [super dealloc]; 
} 

@end 

nsdefault, котор я использую не работает. Когда я снова открываю приложение, ярлык снова начинается с 0. Программа компилируется правильно, и я не получаю никаких ошибок. Пожалуйста, помогите спасибо.

+3

ошибка с ошибкой в ​​вашем коде^_^ – Gabe

+0

Спасибо .... Вот почему я ненавижу себя. – user1050548

+0

Это не грандиозное дело. Я просто с тобой разговариваю :) – Gabe

ответ

0
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

-(void)buttonPressed:(id)sender{ 
    myValue +=1; 
    [myLabel setString:[NSString stringWithFormat:@"Hihi: %d",myValue]]; 
    [defaults setInteger:myValue forKey:@"diffculty"]; 
    [defaults synchronize]; 
} 

Выше правильный синтаксис для того, что вы хотите сделать

Ниже приводится, как получить данные.

- (void)viewDidLoad 
{ 
    // Get the stored data before the view loads 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    NSString *firstName = [defaults objectForKey:@"firstName"]; 
    NSString *lastName = [defaults objectForKey:@"lastname"]; 

    int age = [defaults integerForKey:@"age"]; 
    NSString *ageString = [NSString stringWithFormat:@"%i",age]; 

    NSData *imageData = [defaults dataForKey:@"image"]; 
    UIImage *contactImage = [UIImage imageWithData:imageData]; 

    // Update the UI elements with the saved data 
    firstNameTextField.text = firstName; 
    lastNameTextField.text = lastName; 
    ageTextField.text = ageString; 
    contactImageView.image = contactImage; 

    [super viewDidLoad]; 
} 
Смежные вопросы