Передача переменной из одной сцены в другую - Cocos2D - PullRequest
1 голос
/ 14 апреля 2011

В моей игре есть сцена уровней, в которой я выбираю уровень.В этой сцене я показываю уровень, выбранный в CCLabelTTF.Теперь я хочу передать значение, отображаемое на этом ярлыке, моей главной сцене.Я делаю это следующим образом:

HelloWorld *hello=[HelloWorld getInstance];  //HelloWorld is main scene  

hello.strLevel=[lblLevel string];  //strLevel is NSString to which I am passing the label text  

[[CCDirector sharedDirector]replaceScene:[HelloWorld node]];  

В моей сцене HelloWorld я использую синглтон, чтобы поделиться значением метки, используемой в сцене уровня.

//HelloWorld.h  


@interface HelloWorld : CCColorLayer  

{  

NSString *strLevel;  

}  

@property(nonAtomic,retain)NSString *strLevel;  

+(HelloWorld*)getInstance;  

HelloWorld.mm  

@implementation HelloWorld  

@synthesize strLevel;  

static HelloWorld *instance=nil;  

__________________________  

//Some code  

__________________________  


+(HelloWorld*)getInstance  

{  

if(instance==nil)  

{  

instance=[HelloWorld new];  

} 

return instance;  

}  

Однако это не работает. Как только управление достигает

instance=[HelloWorld new];  

, вызывается init ().И почему бы нет.Однако, когда элемент управления возвращается к сцене уровня в строке, где я передаю значение, ничего не происходит, и HelloWorld показывает значение null для strLevel.

Я знаю, что синглтон - лучший способ передачи значений, чем AppDelegate.Но я не могу этого сделать. Кто-то может меня поправить?

Спасибо

1 Ответ

2 голосов
/ 14 апреля 2011

Используйте синглтон. Как должен выглядеть мой синглтон Objective-C? это хорошее обсуждение синглтона в obj-c. удачи

[EDIT]

 HelloWorld *hello=[HelloWorld getInstance]; //HelloWorld is main scene  
 hello.strLevel=[lblLevel string]; //strLevel is NSString to which I am passing the label text
 [[CCDirector sharedDirector]replaceScene:[HelloWorld node]];

Экземпляр HelloWorld, который вы передаете на replaceScene, отличается от HelloWorld * привет, вы передали экземпляр Singleton. Вот почему в нем нет значения strLevel. Однако значение strLevel помещается в ваш синглтон HelloWorld. Попробуйте

NSLog(@"%@",[[HelloWorld getInstance] strLevel]); //somewhere in the code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...