Cocos2d Отображение проблемы со слоем - PullRequest
0 голосов
/ 28 марта 2011

Я пытаюсь отобразить игровой слой паузы из applicationDidEnterBackground: метод и по какой-то причине он вызывает метод, но ничего не происходит.

Делегат


- (void)applicationDidEnterBackground:(UIApplication*)application {
        ship = [[Ship alloc] init];
        [ship pause];

Метод паузы


- (void)pause
{


    BOOL isPaused = [[CCDirector sharedDirector] isPaused];

    if(!isPaused) 
    {
        //Pause the game
        ccColor4B c = {100,100,0,100}; 
        PauseLayer *pauseLayer = [[[PauseLayer alloc] initWithColor:c] autorelease]; 

        [self.leftMenuItem setIsEnabled:NO];
        [self.rightMenuItem setIsEnabled:NO];
        [self.fireMenuItem setIsEnabled:NO];

        [self addChild:pauseLayer z:10 tag:100];
        [[CCDirector sharedDirector] pause];        
    }
}

PauseLayer


+ (id)scene
{
    CCScene *scene = [CCScene node];
    PauseLayer *layer = [PauseLayer node];
    [scene addChild:layer];
    return scene;
}


- (id)initWithColor:(ccColor4B)color
{
    if((self = [super initWithColor:color])) 
    {
        self.isTouchEnabled = YES; 
        [CCMenuItemFont setFontName:@"Marker Felt"];
        [CCMenuItemFont setFontSize:40];

        CCMenuItemFont *resumeGameItem = [CCMenuItemFont itemFromString:@"Resume" target:self selector:@selector(resumeGame)];
        CCMenuItemFont *menuGameItem = [CCMenuItemFont itemFromString:@"Menu" target:self selector:@selector(goToGameMenu)];

        CCMenu *menu = [CCMenu menuWithItems:resumeGameItem,menuGameItem,nil];
        [menu alignItemsVerticallyWithPadding:40.00];

        [self addChild:menu];
    }
    return self;
}

Спасибо!

1 Ответ

1 голос
/ 28 марта 2011

Если вы инициируете корабль в делегате, он не добавляется ни в один слой кокосов, который я вижу. вам нужно будет получить ссылку на текущую сцену и добавить к ней корабль (при условии, что корабль является подклассом узла Cocos).

...