Nano Hash - криптовалюты, майнинг, программирование

cocos2d — дочерний элемент уже добавлен. Его нельзя добавить снова

поэтому я создал меню паузы,

- (void) reset {

    CCSprite * backg = [CCSprite spriteWithFile:@"noise.png"];
    backg.position = ccp(480/2, 320/2); 
    [pauseMenu addChild:backg];


    CCLabelBMFont *restartLabel = [CCLabelBMFont labelWithString:@"Restart" fntFile:@"good_dog_plain_32.fnt"];
    restartLabel.color = ccc3(68,136,168);
    CCMenuItemLabel *restartItem = [CCMenuItemLabel itemWithLabel:restartLabel target:self selector:@selector(restartMenu)];
    restartItem.position = ccp(0, 40);

    CCLabelBMFont *mainMenuLabel = [CCLabelBMFont labelWithString:@"Main Menu" fntFile:@"good_dog_plain_32.fnt"];
    mainMenuLabel.color = ccc3(68,136,168);
    CCMenuItemLabel *mainMenuItem = [CCMenuItemLabel itemWithLabel:mainMenuLabel target:self selector:@selector(exitMenu)];
    mainMenuItem.position = ccp(0, -40);

    CCLabelBMFont *resumeLabel = [CCLabelBMFont labelWithString:@"Resume" fntFile:@"good_dog_plain_32.fnt"];
    resumeLabel.color = ccc3(68,136,168);
    CCMenuItemLabel *resumeItem = [CCMenuItemLabel itemWithLabel:resumeLabel target:self selector:@selector(resumeMenu)];


    CCMenu *menu = [CCMenu menuWithItems:resumeItem,restartItem,mainMenuItem, nil];
    menu.position = ccp(480/2,320/2);
    [pauseMenu addChild:menu z:1];


    [self.hero sleep];

    [self addChild:pauseMenu];

}

это меню создано в моей игровой сцене, поэтому всякий раз, когда пользователь нажимает кнопку паузы, оно появляется, теперь у меня есть другая сцена под названием mainMenu, и вы можете перейти к mainMenu из меню паузы, и я использовал этот код:

- (void) exitMenu {

    [[CCDirector sharedDirector] replaceScene:[mainMenu scene]];
}

поэтому, как только вы нажимаете эту кнопку, она работает и возвращается в главное меню, но затем, когда я нажимаю кнопку «играть» из mainMenu и захожу в игру и нажимаю кнопку паузы, я получаю эту ошибку: child already added. It can't be added again ... это не так происходит, если я перезапускаю игровую сцену из меню паузы, происходит только тогда, когда я захожу в игру из главного меню после загрузки игры.


Ответы:


1

Это потому, что он вызывает [self addChild:pauseMenu]; каждый раз, когда вы нажимаете кнопку паузы. Вы можете попробовать это вместо этого:

int pauseMenuTag = 99;

if(![self getChildByTag:pauseMenuTag]) {
    [self addChild:pauseMenu z:0 tag:pauseMenuTag];
}

Который, надеюсь, проверит, добавили ли вы уже узел. Кроме того, вы можете убедиться, что все методы, вызываемые кнопками, удаляют меню паузы с помощью removeChild:cleanup:

03.10.2011
  • Я проголосую за этот комментарий, потому что я хотел сделать это, и это очень полезно, но проблема заключалась в том, что в функции exitMenu я не удалил дочерний элемент pauseMenu, поэтому, когда игра снова запустилась, дочерний элемент уже был там. ваше решение исправит это, а также просто удалит ребенка. 04.10.2011

  • 2

    В моем случае эта ошибка произошла, когда я создавал сцену с отсутствующим файлом json:

    var loginScene = ccs.load(res.MainScene_json); 
    

    Я удалил файл MainScene_json, поэтому он выдавал мне эту ошибку. Когда я правильно сослался на правильный файл Login_json, ошибка исчезла.

    var loginScene = ccs.load(res.Login_json); 
    
    27.01.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..