Cocos2D getChild вызвало не объявленную в области видимости ошибку - PullRequest
0 голосов
/ 23 апреля 2011

При попытке скомпилировать следующий код для iphone в xcode

void removeGrid(int x,int y) {
    //for(id *item in self) {
        //if(item.position ==  ccp(x*32, y*32)) {
        //  printf("good");
        //}
        //printf("%@",item);
//  }
    char rrs[8];
    sprintf(rrs,"01%d%d",x/32,y/32);
    int aTag = [[[NSString alloc] initWithBytes:rrs length:sizeof(rrs) encoding:NSASCIIStringEncoding] intValue];
    //NSAssert( aTag != kCCNodeTagInvalid, @"Invalid tag");

    CCNode *child = [self getChildByTag:aTag]; //here it is simply getting a single chil

    if (child == nil)
        CCLOG(@"cocos2d: removeChildByTag: child not found!");
    else
        [self removeChild:child cleanup:true];
}

Компилятор говорит, что "self не было объявлено в этой области". Я новичок в objc и cocos2d, но, похоже, именно так большинство учебников обращаются к объектам в сцене. Я что-то упустил?

1 Ответ

0 голосов
/ 24 апреля 2011

решаемая. Это оказалось одной из причуд Xcode. Поскольку объявление функции было в c ++, по какой-то причине он не смог получить доступ к целевым функциям c. Изменение объявления на цель c позволило ему получить доступ ко всем функциям. Не имеет особого смысла для меня, но теперь работает нормально.

Для тех, кто интересуется, да, файл имеет расширение .mm.

...