タッチが画面の特定の側で開始された場合、左側または右側の BOOL をほぼ YES に設定し、次にタッチが移動するときにチェックして、画面の側を変更するかどうかを確認するチュートリアルでこのコードを見つけました。他の BOOL はい。
だから私は今マルチタッチを実装しようとしていますが、次のコードでどのように機能するかわかりませんか? 誰かが私がそれをどのように行うかについて何か考えがありますか?
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
touchStartPoint = [touch locationInView:self.view];
if (touchStartPoint.x < 160.0) {
touchLeftDown = TRUE;
}
else if (touchStartPoint.x > 160.0) {
touchRightDown = TRUE;
}
}
-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint currentTouchPoint = [touch locationInView:self.view];
if (touchStartPoint.x < 160.0 && currentTouchPoint.x < 160.0) {
touchLeftDown = TRUE;
}
else if (touchStartPoint.x > 160.0 && currentTouchPoint.x > 160.0)
{
touchRightDown = TRUE;
}
}
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
touchLeftDown = touchRightDown = FALSE;
}
ありがとう!
Edit1: これらはブールがゲーム ループで行っていることです。私が達成しようとしているのは、両側に同時にタッチがある場合、両側のタッチがキャンセルされるため、TOUCH_INCREMENT が 0 になることです。お互いアウト。どうすればそれを達成できますか?とにかく、これは私が話しているコードです:
if (touchLeftDown == TRUE) {
touchStep -= TOUCH_INCREMENT;
}
else if (touchRightDown == TRUE) {
touchStep += TOUCH_INCREMENT;
}
else {
touchStep = SLOWDOWN_FACTOR * touchStep;
}
touchStep = MIN(MAX(touchStep, -MAX_ABS_X_STEP), MAX_ABS_X_STEP);
pos.x += touchStep;