в cocos2d-iphone У меня есть класс CCLayer под названием GameScene
Я хочу использовать этот класс из другого класса, однако я не знаю имя экземпляра класса GameScene
Я инициализировалЭкземпляр класса GameScene выглядит следующим образом:
-(id) init {
if ((self = [super init])) {
, однако это не даст мне имя экземпляра
. Я прочитал в документации, что можно использовать метод с именем initWithName, поэтому я попробовал что-то вродеэто, но это не работает, это дает мне предупреждение:
In function '-[GameScene init]':
warning: 'CCLayer' may not respond to '-initWithName:'
код, который я пробовал:
-(id) init {
if ((self = [super initWithName:"gamescene"])) {
Мне понадобится только один экземпляр этого класса в игре, но я не могу пойматьобработчик этого экземпляра, чтобы я мог использовать его из других классов?
любая идея
Большое спасибо
обновление:
Привет
Я собираюсь обновить код, чтобы вы знали, что я пробовал ваше решение, но оно пока не работает
в MyAppDelegate.h У меня есть эти строкикод:
во-первых, у меня есть defВ приложении делегат, чтобы поделиться им с другими классами
MyAppDelegate.h
#define AD (MyAppDelegate *)[[UIApplication sharedApplication] delegate]
и в MyAppDelegate.m у меня есть следующий код:
gs = [[GameScene alloc] init];//this is the gamescene
sc = [gs scene]; //this calls the method -(id)(scene)
[[CCDirector sharedDirector] runWithScene: sc]; //runwithscene
сейчаскогда я пытался использовать gs в другом классе, например, player.m класс-
player.m
GameScene* gs = [AD gs]; //retrieving the instance from appdelegate
[gs updateScoreByAmount:5];/calling the method "updateScoreByAmount"
результаты, угадайте, что произойдет?
программа работает без ошибок, однако экземпляр gs, кажется, отличается от того, который запускается appdelegate, поскольку этот метод updateScoreByAmount не влияет на сцену, которая запускается runWithScene в appdelegate
любая идея?
Большое спасибо всем, кто пытался помочь