0

だから、2つのスプライトを常に上下に動かすことができる関数または何かが必要です! アプリからは、画面に何も触れていない状態で起動します..

私がやろうとしたことはここにありますが、それは私のinitにあるため、一度しか実行されません..どうすればこのループを自分自身にして動的に見せることができますか?

if (bgSkyer == false) {
            [bg3 runAction:[CCMoveTo actionWithDuration:0.5 position:ccp(240,100)]];
            [bg2 runAction:[CCMoveTo actionWithDuration:1.5 position:ccp(240,95)]];
            bgSkyer = true;
        }else {
            [bg3 runAction:[CCMoveTo actionWithDuration:0.5 position:ccp(240,112)]];
            [bg2 runAction:[CCMoveTo actionWithDuration:1.5 position:ccp(240,80)]];
            bgSkyer = false;
        }
4

2 に答える 2

1

Jebegoの回答に示されているように、を使用する必要がありますCCRepeatForever。ただし、bgSkyer2つの位置を切り替えるためのフラグとして使用している場合、以下に示すように、とCCRepeatForever一緒に使用している場合は、そのフラグを完全にスキップすることができCCSequenceます(明確にするために明示的な変数が使用されますが、いつでもワンライナーにマージできます)お望みならば):

CCMoveTo *moveTo_240_95 = [CCMoveTo actionWithDuration:1.5 position:ccp(240,95)];
CCMoveTo *moveTo_240_80 = [CCMoveTo actionWithDuration:1.5 position:ccp(240,80)];
CCSequence *actionsForBg2 = [CCSequence actions:moveTo_240_95, moveTo_240_80, nil];
CCAction *repeatForBg2 = [CCRepeatForever actionWithAction:actionsForBg2];
[bg2 runAction:repeatForBg2]

CCMoveTo *moveTo_240_100 = [CCMoveTo actionWithDuration:0.5 position:ccp(240,100)];
CCMoveTo *moveTo_240_112 = [CCMoveTo actionWithDuration:0.5 position:ccp(240,112)];
CCSequence *actionsForBg3 = [CCSequence actions:moveTo_240_100, moveTo_240_112, nil];
CCAction *repeatForBg3 = [CCRepeatForever actionWithAction:actionsForBg3];
[bg3 runAction:repeatForBg3]

CCSequenceシーケンス内で次々に渡されるアクションを実行し、ノードCCRepeatForeverを呼び出すまで、またはノードの割り当てが解除されるまで、シーケンスを永久に繰り返します。[node stopAllActions]

于 2011-06-18T06:30:25.157 に答える
0

このようなものがあなたが探しているものかもしれないと思います:

if (bgSkyer == false) {
    CCMoveTo *moveOne = [CCMoveTo actionWithDuration:0.5 position:ccp(240,100)];
    CCRepeatForever *repeatOne = [CCRepeatForever actionWithAction:moveOne];
    [bg3 runAction:repeatOne];

    CCMoveTo *moveTwo = [CCMoveTo actionWithDuration:1.5 position:ccp(240,95)];
    CCRepeatForever *repeatTwo = [CCRepeatForever actionWithAction:moveTwo];
    [bg3 runAction:repeatTwo];
}else{
    //just repeat code, etc...
}

それがうまくいくことを願っています!

于 2011-06-17T20:29:23.670 に答える