2012-05-05 6 views
0

私は、より多くの練習を得るためにcocos2dを使用していくつかのサンプルゲームに取り組んでおり、クラスに問題があります。ここに私の例です:スプライトを描画するための別のクラスは、クラスが動作しません

私はメイン層で

someShapes.h

#import <Foundation/Foundation.h> 
#import "cocos2d.h" 

@interface palleteOfShapes : CCLayer 
{ 
    NSMutableArray *shapesArray; 
} 
@property (nonatomic,retain) NSMutableArray *shapesArray; 
-(void)drawPallete; 
@end 

someShapes.m

#import "palleteOfShapes.h" 

@implementation palleteOfShapes 
@synthesize shapesArray; 
-(void)drawPallete 

{ 
    shapesArray = [NSMutableArray arrayWithObjects:@"Icon.png",@"A.png",@"questionMark.png",nil]; 
    for (int i=0; i<shapesArray.count; i++) { 
     NSString *imagestring = [shapesArray objectAtIndex:i]; 
     CCSprite *sprite = [CCSprite spriteWithFile:imagestring]; 
     NSLog(@"i value: %i",i); 
     sprite.position=ccp(100*i,350); 
     NSLog(@"image added:%@",imagestring); 
     [self addChild:sprite]; 
     NSLog(@"count: %d",[shapesArray count]); 
    }   
    NSLog(@"pallete was completed"); 
    [shapesArray removeLastObject]; 
    NSLog(@"count:%d",[shapesArray count]); 

} 
@end 

palleteOfShapes *newPallete = [[palleteOfShapes alloc]init]; 
[newPallete drawPallete]; 

私はこれらのスプライトは上に表示されますことを期待私のメインレイヤー、しかし彼らはしません。 NSLogはすべてのメッセージを表示しますが、スプライトは表示しません。

できれば、間違っていることを教えてください。ありがとうございます。

答えて

0

"palleteOfShapes"レイヤーにスプライトを追加しますが、メインレイヤーに追加したり、 "palleteOfShapes"を追加したりすることはありません。

+0

まあ、私はメインレイヤーでdrawPalleteを呼ぶと思っていますが、スプライトはメインレイヤーで作業してレイヤーに自分自身を描かなければならないと思うでしょう:)おそらく、それは馬鹿げた考えでした。あるクラスからこれらのスプライトをメインレイヤーに追加する方法を教えてください。 – repoguy

+0

シーンを直接描いたり他のものを描いたりするためには、シーン内に物を持っていなければなりません。メインレイヤのinitや何らかの方法で "newPallete"を作成したら、それをメインレイヤ[self addChild:newPallete]に追加します。また、メインレイヤーをシーンに追加したことを確認してください。 – Kreiri

+0

うわー、なぜ私はシーンに追加する必要はないと思ったのか分かりません.Dはすべて動作します、ありがとうございます。 – repoguy

0

-(id) initメソッドを実装し、そこでいくつかの初期化を試してください。

+0

メインレイヤーにinitメソッドを実装しました。パレットレイヤーでも同じことをすると、メインレイヤーではなく別レイヤーにすべてが描画されます。おもう。 – repoguy

関連する問題