0

3 つの画像があり、それらを次々と繰り返したいと思います。レイヤーが左に移動すると、最初の画像が見えなくなり、この画像は右の最後の画像の直後に新しい位置に移動するため、最初の画像が 3 番目の画像になり、アニメーションが繰り返されます。

私の問題は、少し時間の経過があることです。最初の画像が削除され、3 番目の位置に置かれたときに発生すると思います。ほとんど気づきませんが、アニメーションを 0.1 秒間「一時停止」しているようなもので、これは避けたいと思います。

どのように知っていますか?私はこのコードを試しました(画像を削除して再度挿入します)、または単に置き換えるだけreplace...atIndexですが、同じ問題が発生しました。コードは次のとおりです。

if (offsetParam <= offset1-spriteWidth){
        CCSprite *temp = [[sprites objectAtIndex:0] retain];
        [sprites removeObjectAtIndex:0];
        [sprites addObject:temp];
        temp.position = ccp(-offset1+(2*spriteWidth), temp.position.y);
        [temp release];

        offset1 -= spriteWidth;
 }

何か案が ?

ありがとう


編集:カウンターで、オブジェクトは動かないのですか?(念のため「保持」を試してみましたが、それの有無にかかわらず、同じ結果が得られました)

if (rightDirection){
    //RIGHT
    CCLOG(@"offsetParam %f, offset1-spriteWidth %f", offsetParam, offset1-spriteWidth);
    if (offsetParam < offset1-spriteWidth){ //move the block to the right

        CCSprite *temp = [[grasses objectAtIndex:counterGrass] retain];
        counterGrass++;
        if (counterGrass>2) counterGrass = 0;
        temp.position = ccp(offset1+(2*spriteWidth), temp.position.y);//does not work
        [temp release];
        offset1 -= spriteWidth;
    }
4

1 に答える 1

1

タイプ CCArray または NSMutableArray の「スプライト」ですか? CCArray は removeObjectAtIndex で深刻なパフォーマンスの問題を抱えているため、特にあなたの場合のようにインデックスが低い場合 (配列の先頭) はそうです。

NSMutableArray に切り替えてみて、それが役立つかどうかを確認できます。

または、remove と add は不要なので使用しないでください。代わりに、どの配列インデックスが最初のスプライトかを示すインデックス カウンターを使用します。インデックスが >= スプライト配列内の項目数の場合、0 にリセットします。

于 2012-08-13T13:52:09.190 に答える