Использовать подкласс 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
?