2011-11-08 5 views
0

私は私のinitでこのコードを持って間違っている:CCSpriteは

-(id)init { 
    if ((self = [super init])) { 
     CGSize screenSize = [CCDirector sharedDirector].winSize; 
     mapSize = CGSizeMake(4000, 4000); 

     rotateWorld = [CCNode node]; 
     [rotateWorld setContentSize:mapSize]; 
     rotateWorld.position = CGPointMake(screenSize.width/2, screenSize.height/2); 

     positionWorld = [CCNode node]; 
     [positionWorld setContentSize:mapSize]; 
     positionWorld.position = CGPointMake(mapSize.width/2, mapSize.height/2); 
     [rotateWorld addChild:positionWorld z:0]; 
     [self addChild:rotateWorld z:0]; 

     // Test enemy 
     [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"EnemiesSpritesheet.plist"]; 
     spriteSheetNonPlayer = [[CCSpriteBatchNode alloc] initWithFile:@"EnemiesSpritesheet.png"capacity:10]; 
     [positionWorld addChild:spriteSheetNonPlayer z:0]; 
     enemy = [[Enemy_01 alloc] initWithSpriteFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"enemy_01_01.png"]]; 
     enemy.position = CGPointMake(mapSize.width/2, mapSize.height/2); 
     [spriteSheetNonPlayer addChild:enemy]; 
    } 

    return self; 
} 

は今、私は私の敵のスプライトが画面の中央に表示するために期待されるが、それはしていませんそれがまったく表示されているかどうかはわかりません。面白いのは、positionWorldをCCNodeから4000x4000の背景イメージを含むCCSpriteに変更した場合、それは完全に動作しますが、contetSizeを設定したCCNodeではどうしてですか?これをCCNodeで動作させるにはどうすればよいですか?

はあなたがanchorPointがCCNodeためccp(0.5,0.5)になるように設定する必要があなたに セーレン

答えて

0

ありがとうございます。

rotateWorld.anchorPoint = ccp(0.5f,0.5f); 
positionWorld.anchorPoint = ccp(0.5f,0.5f); 

CCSpriteはそのinit方法(CCSprite.mのライン149)で内部的に同じことを行います。

+0

本当にありがとう、私はこれで苦労しました! – Neigaard

関連する問題