0

背景を埋めるために CCSprite を配置しようとしています。私のシーンには、この CCLayer の 2 つのインスタンスがあります。そのうちの 1 つは背景が少しオフセットされて正しい位置に表示されますが、もう 1 つはレイヤーを表示することさえできません。これは、self/self.parent/self.parent.parent と convertTo/Node/World/AR/Space の正しい組み合わせを使用していないことが原因だと感じています。

これは、レイヤーの 1 つのインスタンスに対して機能する私のコードです。

CGPoint offsetPos = [self convertToWorldSpace:self.position];
if(UIDeviceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)){
    bgSprite.position = ccp(offsetPos.x+60, offsetPos.y);
} else {
    bgSprite.position = ccp(offsetPos.x-65, offsetPos.y);
}

これが他のレイヤーのどこでつまずいているかを確認するために (isThumbnailプロパティによって決定されるため、いくつかのログを追加しました:

if(self.isThumbnail){
        NSLog(@"--: %.0f,%.0f", self.bgSprite.position.x, self.bgSprite.position.x);
        NSLog(@"A: %.0f,%.0f", [self.parent convertToWorldSpace:self.bgSprite.position].x, [self.parent convertToWorldSpace:self.bgSprite.position].y);
        NSLog(@"B: %.0f,%.0f", [self convertToWorldSpace:self.bgSprite.position].x, [self convertToWorldSpace:self.bgSprite.position].y);
        NSLog(@"C: %.0f,%.0f", [self.parent convertToNodeSpace:self.bgSprite.position].x, [self.parent convertToNodeSpace:self.bgSprite.position].y);
        NSLog(@"D: %.0f,%.0f", [self convertToNodeSpace:self.bgSprite.position].x, [self convertToNodeSpace:self.bgSprite.position].y);
        NSLog(@"E: %.0f,%.0f", [self.parent convertToWorldSpaceAR:self.bgSprite.position].x, [self.parent convertToWorldSpaceAR:self.bgSprite.position].y);
        NSLog(@"F: %.0f,%.0f", [self convertToWorldSpaceAR:self.bgSprite.position].x, [self convertToWorldSpaceAR:self.bgSprite.position].y);

        NSLog(@"--: %.0f,%.0f", self.position.x, self.position.x);
        NSLog(@"G: %.0f,%.0f", [self.parent convertToWorldSpace:self.position].x, [self.parent convertToWorldSpace:self.position].y);
        NSLog(@"H: %.0f,%.0f", [self convertToWorldSpace:self.position].x, [self convertToWorldSpace:self.position].y);
        NSLog(@"I: %.0f,%.0f", [self.parent convertToNodeSpace:self.position].x, [self.parent convertToNodeSpace:self.position].y);
        NSLog(@"J: %.0f,%.0f", [self convertToNodeSpace:self.position].x, [self convertToNodeSpace:self.position].y);
        NSLog(@"K: %.0f,%.0f", [self.parent convertToWorldSpaceAR:self.position].x, [self.parent convertToWorldSpaceAR:self.position].y);
        NSLog(@"L: %.0f,%.0f", [self convertToWorldSpaceAR:self.position].x, [self convertToWorldSpaceAR:self.position].y);

        NSLog(@"--: %.0f,%.0f", self.bgSprite.position.x, self.bgSprite.position.x);
        NSLog(@"M: %.0f,%.0f", [self.parent.parent convertToWorldSpace:self.bgSprite.position].x, [self.parent.parent convertToWorldSpace:self.bgSprite.position].y);
        NSLog(@"N: %.0f,%.0f", [self.parent.parent convertToNodeSpace:self.bgSprite.position].x, [self.parent.parent convertToNodeSpace:self.bgSprite.position].y);
        NSLog(@"O: %.0f,%.0f", [self.parent.parent convertToWorldSpaceAR:self.bgSprite.position].x, [self.parent.parent convertToWorldSpaceAR:self.bgSprite.position].y);

その結果:

ReadMeAStory[3853:c07] --: -55,-55
ReadMeAStory[3853:c07] A: -55,587
ReadMeAStory[3853:c07] B: -45,1074
ReadMeAStory[3853:c07] C: -55,487
ReadMeAStory[3853:c07] D: -65,0
ReadMeAStory[3853:c07] E: -55,587
ReadMeAStory[3853:c07] F: -45,1074
ReadMeAStory[3853:c07] --: 10,10
ReadMeAStory[3853:c07] G: 10,537
ReadMeAStory[3853:c07] H: 20,1024
ReadMeAStory[3853:c07] I: 10,437
ReadMeAStory[3853:c07] J: 0,-50
ReadMeAStory[3853:c07] K: 10,537
ReadMeAStory[3853:c07] L: 20,1024
ReadMeAStory[3853:c07] --: -55,-55
ReadMeAStory[3853:c07] M: -55,537
ReadMeAStory[3853:c07] N: -55,537
ReadMeAStory[3853:c07] O: 309,954

この場合にどれが必要か、そしておそらく知る方法を誰かが説明できますか?

編集:背景スプライトは、次のように階層に追加されます。

    UIImage *bgImage = [Utils backgroundWithName:currentScene.background];
    bgSprite = [CCSprite spriteWithCGImage:bgImage.CGImage key:currentScene.background];
    bgSprite.contentSize = self.contentSize;
    [self updateBackground];
    [self addChild:bgSprite z:0];

階層は次のようになります (括弧は要素が追加される順序を示します)

-Scene
--Main layer (1) - background in correct position
--Other layers container (2)
---Other layer A (3)
----Background sprite (7)
---Other layer B (4)
----Background sprite (8)
---Other layer C (5)
----Background sprite (9)
---Other layer D (6)
----Background sprite (10)
4

0 に答える 0