Привет, ребята, я работаю следующим образом. Я получаю 2 слоя, один для контроля, а другой - для игрового материала. Проблема в том, что игра застряла (сцена игры обновлена и показана, но она вышла из-под контроля), когда я trigerred функцию для перезапуска с моего уровня управления. Не знаю, где проблема.Обновите сцену игры в cocos2d
//restart function from input layer
......
-(id) init
{
if ((self = [super init]))
{......}
return self;
}
......
-(void)restart
{
GameScene* game = [GameScene sharedGameScene];
[game restartScene];
}
//gameLayer
......
static GameScene* instanceOfGameScene;
@implementation GameScene
+(GameScene*) sharedGameScene
{
if(instanceOfGameScene == nil)
instanceOfGameScene = [[self alloc]init];
return instanceOfGameScene;
}
+(id) scene
{
CCScene* scene = [CCScene node];
GameScene* layer = [GameScene node];
[scene addChild:layer z:0];
InputLayer* inputLayer = [InputLayer node];
[scene addChild:inputLayer z:1];
return scene;
}
-(void) restartScene
{
CCScene * newScene = [GameScene scene];
[[CCDirector sharedDirector] replaceScene:\
[CCTransitionFade transitionWithDuration:0.7f scene:newScene]];
}
......
Ой, SRY для моего плохого типа. Я изменил код выше. Он должен быть «[[CCDirector sharedDirector] replaceScene: [CCTransitionFade transitionWithDuration: 0.7f scene: newScene]] '. – user3201493
хорошо, тогда, возможно, вы либо будете постоянно перезапускать сессию (объясните проблему «застревание»), либо предыдущая сцена не удалила или, возможно, приложение просто разбилось, но по какой-либо причине Xcode не выходил на передний план, чтобы отобразить ошибку – LearnCocos2D
, я понял что игра утихает, потому что игровой сервер продолжает называть init(). Экземпляр instanceOfGameScene из gamelayer каким-то образом становится нулевым, но я понятия не имею, почему. Все отлично работает, когда я помещаю все в один слой, но я не думаю, что это рекомендуется. – user3201493