0

CCParticleSystemQuad私はに子として追加しようとしLHSpriteます:

player = [loader spriteWithUniqueName:@"player"];
NSAssert(player != nil, @"Couldn't find the player!");

// Particles
smokeParticles = [CCParticleSystemQuad particleWithFile:@"smoke.plist"];
smokeParticles.position = ccp(-30.0, 0.0);
[player addChild:smokeParticles];

しかし、私はこのエラーメッセージを受け取り続けます:

2012-12-29 22:51:44.373 MyProject[15396:15203]
*** Assertion failure in -[LHSprite addChild:z:tag:],
/MyPath/MyProject/libs/cocos2d/CCSprite.m:567

に を追加CCParticleSystemQuadするCCLayer

[self addChild:smokeParticles];

うまく動作します。


CCSprite.m:567行目

NSAssert([child isKindOfClass:[CCSprite class]],
         @"CCSprite only supports CCSprites as children when using CCSpriteBatchNode");

なぜこれが起こるのか誰か教えてもらえますか?

4

2 に答える 2

0

Level Navigator の LH 内 - スプライトを MAIN_LAYER の上にドラッグします。これにより、バッチ ノードからスプライトが削除され、自己レンダリングされます。これで、コードを介して子を追加できるようになります。バッチ スプライトを使用する場合、バッチ ノードと同じテクスチャを持つ (つまり、同じ画像ファイルを使用する) 子のみをスプライトに追加できます。

LHParallaxNode の場合 - これはパーティクル/スプライトをノードに追加するのではなく、移動するだけです。したがって、パーティクルもレイヤーに追加する必要があります

[self addChild:particle z:100];

それを視差ノードに追加します。

Bogdan VladuLevelHelper の作成者はそう言っています..

于 2013-03-04T22:12:54.670 に答える
0

理由は assert メッセージに示されています。これは、CCSpriteBatchNode を使用する場合、CCSprite が子として CCSprite のみをサポートするために発生します。CCSpriteBatchNode を使用してスプライトを描画する場合、CCSprite を子としてこのスプライトにのみ追加できます。

于 2012-12-29T23:42:23.777 に答える