0

誰でも答えることができます、私はスプライトの画像を変更する必要があり、私は自分の関数を使用してそれを行います

-(void) openKeyWithSprite:(id) sender withSpriteName:(NSString*)spriteName

これはメモリのリークにつながる可能性がありますか、それとも大丈夫ですか?

init

_spriteBonus=[CCSprite spriteWithFile:@"monstr_1_1.png"];

スケジュールで

-(void) openKeyWithSprite:(id) sender withSpriteName:(NSString*)spriteName
{
        CCTexture2D* tex = [[CCTextureCache sharedTextureCache] addImage:spriteName];
        [_spriteBonus setTexture: tex];


}
4

2 に答える 2

0

フレームアニメーションを作成する場合は、CCAnimateアクションを使用します。例えば、

id yourAnimation = [CCAnimation animationWithFrames: arrayOfFrames];
id animateAction = [CCAnimate actionWithDuration: animationDuration 
                                       animation: yourAnimation
                            restoreOriginalFrame: YES];
[yourSprite runAction: animateAction];

アニメーションを繰り返す必要がある場合は、たとえば、CCRepeatForeverアクションのCCRepeatを使用します。

id resultAction = [CCRepeatForever actionWithAction: animateAction];
[yourSprite runAction: resultAction];
于 2012-04-17T15:48:25.710 に答える
0

ここに示したコードは問題なく、メモリをリークすることはありません。 setTexture古いテクスチャ参照を解放し、新しいテクスチャ参照を保持します。

ただし、ARC:を使用していないと仮定する[CCSprite spriteWithFile:@"monstr_1_1.png"];と、プール内にあるため、メモリに保持するために、(作成している関数を終了する前に) autorelease必ず親に追加してください。CCNode

于 2012-04-17T15:51:41.187 に答える