を使用して初期化される CCSprite があります[CCSprite spriteWithSpriteFrameName:@"plist_file_key_here.png"]
。すべてのスプライトを plist ファイルから CCSpriteFrameCache に追加しました。私はこのようにテクスチャを設定しようとしました:
CCSpriteFrame * frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:name];
NSAssert(frame.texture!=nil, @"frame.texture can't equal nil"); //this works fine
[sprite setTexture:frame.texture]; //doesn't cause a white square to appear, just doesn't switch the image.
コメントで述べたように、これは機能しません。テクスチャ アトラスから CCSpriteFrameCache にロードされたスプライト フレームに依存する[CCSprite spriteWithFile:]
との使用の違いに関係があると思います。[CCSprite spriteWithSpriteFrameName:]
テクスチャ アトラスから読み込まれたスプライトを使用する場合、各スプライトのテクスチャはスプライト シートのテクスチャと等しくなります。これを回避する方法はありますか、それともスプライトを削除して再作成する必要がありますか? それが私の唯一の選択肢である場合、ccnode をその親から削除し、その子を保持する方法はありますか?