指のスワイプ (ccTouchBegan から ccTouchMoved) を使用して移動する Player スプライトがあります。TouchEnded でアクションを停止したいのですが、途中でアクションを終了させたくありません。したがって、タッチが終了したかどうかを確認し、終了した場合はstopAllActionsを実行するためにonCallFuncが必要だと考えています。どうすればこれを行うことができるかについてのアイデアはありますか?
-(void) onCallFunc
{
// Check if TouchEnded = True if so execute [Player stopAllActions];
CCLOG(@"End of Action... Repeat");
}
-(無効) ccTouchMoved:
//Move Top
if (firstTouch.y < lastTouch.y && swipeLength > 150 && xdistance < 150 && xdistance > -150) {
CCMoveTo* move = [CCMoveBy actionWithDuration:0.2 position:ccp(0,1)];
CCDelayTime* delay = [CCDelayTime actionWithDuration:1];
CCCallFunc* func = [CCCallFunc actionWithTarget:self selector:@selector(onCallFunc)];
CCSequence* sequence = [CCSequence actions: move, delay, func, nil];
CCRepeatForever* repeat = [CCRepeatForever actionWithAction:sequence];
[Player runAction:repeat];
NSLog(@"my top distance = %f", xdistance);
}
if (firstTouch.y < lastTouch.y && swipeLength > 151 && xdistance < 151 && xdistance > -151) {
NSLog(@"my top distance = %f", xdistance);
}
}
私が達成しようとしていること:タッチ イベントを使用してプレイヤーにタイルごとに移動させることで、ポケモンやゼルダなどのゲームで行われる動きをシミュレートしようとしています。
更新: BOOL フラグを作成するためのコメントの後、Objective-C を使用するのは初めてですが、BOOL フラグを使用しようとしています。各セクションで未使用の変数の警告が表示されます。
-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
BOOL endBOOL = YES;
NSLog(@"Stop Actions");
}
-(void) onCallFunc
{
if(endBOOL == YES){
[Player stopAllActions];
}
// Check if TouchEnded = True if so execute [Player stopAllActions];
CCLOG(@"End of Action... Repeat");
}