RunAction で 2 つのパラメーターを送信する方法はありますか?
上にラベルが付いたスプライトを移動しようとしているのがわかります。それぞれに別の関数を作成しました。これに似ています。
[sprite runAction:
[CCSequence actions:actionMove, actionMoveDone, nil]];
id actionMoveDone = [CCCallFuncN actionWithTarget:self
selector:@selector(spriteLabelMoveFinished:)];
ここで、2 つの質問があります。1-2 つ以上のパラメーターを送信する方法はありますか???? 2-メモリを節約し、両方を1つのアクションで実行する方法があるかどうか疑問に思っていましたか?
- (void) spriteMoveFinished:(id)sender
{
CCLOG(@"Sprite move finished");
Sprites *sprite = (Sprites *)sender;
[self animateSprite:sprite];
}
- (void) animateSprite:(Sprites *)zprite
{
CCLOG(@"We're animating sprite"):
Sprites *sprite = nil;
sprite = zprite;
int actualDuration = sprite.speed; //property of sprite
// Create the actions
id actionMove = [CCMoveBy actionWithDuration:actualDuration
position:ccpMult(ccpNormalize(ccpSub(_player.position,sprite.position)), 10)];
id actionMoveDone = [CCCallFuncN actionWithTarget:self
selector:@selector(spriteMoveFinished:)];
[sprite runAction:
[CCSequence actions:actionMove, actionMoveDone, nil]];
}
- (void) spriteLabelMoveFinished:(CCLabelTTF *)sender
{
[self animateSpriteLabel:sender];
}
-(void)animateEnemyHP:(CCLabelTTF *)zpriteLabel
{
CCLabelTTF *spriteLabel = nil;
spriteLabel = zpriteLabel;
int actualDuration = spriteSpeed; //another property
id actionMove = [CCMoveBy actionWithDuration:actualDuration
position:ccpMult(ccpNormalize(ccpSub(_player.position,spriteLabel.position)), 10)];
id actionMoveDone = [CCCallFuncN actionWithTarget:self
selector:@selector(spriteLabelMoveFinished:)];
[spriteLabel runAction:
[CCSequence actions:actionMove, actionMoveDone, nil]];
}
さて、この4つの機能はちょっと明白です。
1-Move Sprite スプライトの移動が終了したら、もう一度移動します。2-同じ速度で同じ位置に向かってラベルを移動します。ラベルの移動が終了したら、もう一度移動します。
二人は同じ場所に行く。この4つの機能を2つに混ぜる方法はありますか? その場合、アクションが終了したときに 2 つのパラメーターを送信するにはどうすればよいですか? あなたの助けとあなたの時間をありがとう、素晴らしい一日を!