0

のカスタムクラスを作成し、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
4

2 に答える 2

0

見つけた!

for (AACustomClassLayer *cardLayer in levels) {
    cardLayer = [[AACustomClassLayer node] autorelease];
    [layers addObject:cardLayer];
}
于 2012-04-20T11:35:00.913 に答える
0

for列挙から取得しているオブジェクトが実際にCCLayerであるかどうかを判断する条件付きチェックをループに追加する必要があります。クラッシュログには、アンカーポイントを処理する投稿したコードであるため、anchorPointセッターが一部のオブジェクト、おそらく配列内のオブジェクトで使用できなかったことが示されています。layers_

列挙は便利ですが、オブジェクトの1つがそうではない可能性がある場合は、すべてのオブジェクトをケーシングしますCCLayer。オブジェクトをどこに追加しているかわかりませんが、layers_実際にはそうではないオブジェクトを追加している可能性はありますCCLayerか?

于 2012-04-21T04:00:48.177 に答える