Использовать подкласс CCLayer для CCScrollLayer

Я создал собственный класс, который является subclass из CCLayer и пытается использовать его для CCScrollLayer

Я делаю это так:

//Store the my layers to an NSMutableArray
for (AACustomClassLayer *cardLayer in levels) {
    [layers addObject:cardLayer];
}

Под капотом CCScrollLayer он падает в:

- (void) updatePages
{
    // Loop through the array and add the screens if needed.
    int i = 0;
    for (CCLayer *l in layers_)
    {
        l.anchorPoint = ccp(0,0);
        l.contentSize = [CCDirector sharedDirector].winSize;
        l.position = ccp(  (i * (self.contentSize.width - self.pagesWidthOffset)), 0  );
        if (!l.parent)
            [self addChild:l];
        i++;
    }
}

Реализация для класса AACustomClassLayer (подкласс CCLayer) выглядит следующим образом:

-(id)initWithChapter:(AALevel *)level {
    self = [super init];
    if (self) {
        self.isTouchEnabled = YES;
//Here I'm adding the CCSprite to my layer

  }
    return self;
}

ОБНОВИТЬ:

Журнал аварии

2012-04-20 14:12:12.344 [15780:10a03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary setAnchorPoint:]: unrecognized selector sent to instance 0x884ab40'
*** First throw call stack:
(0x1a75022 0x200fcd6 0x1a76cbd 0x19dbed0 0x19dbcb2 0xd013f 0xcfe2b 0x102370 0x44c15 0xbe45f 0x8a94be 0x8aa274 0x8b9183 0x8b9c38 0x8ad634 0x282def5 0x1a49195 0x19adff2 0x19ac8da 0x19abd84 0x19abc9b 0x8a9c65 0x8ab626 0xbda06 0x22e5)
terminate called throwing an exception

2 ответа

Решение

Я нашел это!

for (AACustomClassLayer *cardLayer in levels) {
    cardLayer = [[AACustomClassLayer node] autorelease];
    [layers addObject:cardLayer];
}

Вы должны добавить условную проверку в свой for цикл, который определяет, является ли объект, который вы получаете от перечисления, на самом деле CCLayer. В вашем журнале сбоев указано, что anchorPoint Сеттер не был доступен для какого-либо объекта, предположительно для объекта в вашем layers_ массив, так как это код, который вы опубликовали, который имеет дело с anchorPoints.

Перечисление удобно, но все объекты CCLayer когда возможно, что одного из них нет. Я не знаю, куда вы добавляете объекты layers_ но возможно ли вы добавить объект, который на самом деле не CCLayer?

Другие вопросы по тегам