レイヤーに一連のスプライトを配置しようとしていますが、すべてのスプライトをグループとして移動したいので、CocosNodeを作成して同じに設定しました画面の中央に配置し、そのノードに追加するのではなく、そのノード(lightNode)にスプライトを追加します。Cocos2d - 親ノード上の複数のスプライト
私が見ているのは、スプライトがlightNodeではなくレイヤーに配置されている場合と比べて、正しい(同じ?)位置に表示されないということです。
XCode Cocos2dアプリケーションテンプレート "Hello World"を使用して問題を示すテストプログラムを作成しました。次にHelloWorldScene.mのHelloWorldクラスの-init()メソッドをこのコードに置き換えました。
-(id) init
{
if((self=[super init]))
{
// create my parent node that will contain all the related sprites
lightPane = [[CocosNode alloc] init];
CGSize paneSize = { 480, 320 };
[lightPane setContentSize:paneSize];
[lightPane setPosition:ccp(240, 160)];
// add pane to layer
[self addChild:lightPane z:0];
// add a series of sprites to demonstrate the problem
int y = 40;
int x;
for (x=30; x<300; x+=20)
{
Sprite *sp = [Sprite spriteWithFile:@"pause.png"];
[sp setPosition:ccp(x, y)];
NSLog(@"Next sprite at position (%d, %d)", x, y);
[lightPane addChild:sp z:1];
//[self addChild:sp z:1];
x+= 20;
}
}
return self;
}
このコードは、「pause.png」と呼ばれるPNGファイルを参照する - ジャストサイズが30×30ピクセルについての小さな画像を撮影し、それを実行するには、このプロジェクトに配置します。
スプライトは画面の中央付近から右端に向かって表示されます。
lightPaneにスプライトを追加する行をコメントアウトし、その下の行のコメントを外してサンプルを再実行すると、必要な座標にスプライトが正しく表示されます。
これは明らかにスプライトの親として使用しているCocosNodeと関係があります。誰でも私がここで間違っているのを見ますか?
よく形成された質問、良いコードサンプル! +1 – nash