基本的に、CCSequence に入れたいスケジューラ関数が 2 つあります。
id func1 = [CCCallFuncN actionWithTarget:self selector:@selector(pan1)];
id func2 = [CCCallFuncN actionWithTarget:self selector:@selector(pan2)];
id seq = [CCSequence actions: func1, func2, nil];
[img runAction:seq];
pan1 は左から右にパンし、pan2 は右から左にパンします。
-(void) pan1{
[self schedule:@selector(panLtoR) interval:0.05];
}
-(void) pan2{
[self schedule:@selector(panRtoL) interval:0.05];
}
私の望む結果は、func2 が始まる前に func1 が完全に完了することです。しかし今のところ... func1がまだ実行されているときにfunc2が始まります。そして、私はその理由を理解できません。どうすればこの問題を解決できますか? 前もって感謝します。
追加: panLtoR のコードは次のようになります
-(void) panLtoR{
[self panLtoR: 1 andY:0.5];
}
-(void) panLtoR:(float) x andY: (float) y{
float rightAnchorX = x - m_minAnchorX;
if(m_curAnchorX <= rightAnchorX)
{
m_img.anchorPoint = ccp(m_curAnchorX, y);
m_curAnchorX += 0.005;
}
else{
[self unschedule:@selector(panLtoR)];
}
}
panRtoL も同様のことを行います。基本的に私がやろうとしていたのは、位置ではなくアンカーポイントを移動してパンを実現することです。func2 を開始する前に func1 を終了するようにするにはどうすればよいですか?