我在一個教程中發現了這個代碼,它幾乎將左側或右側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;
}
謝謝!
編輯1: 這些是bools在遊戲循環中所做的事情,我試圖實現的幾乎是,如果在兩側同時觸摸,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;
這個問題可能更具體。您應該首先定義多個觸摸應該如何工作。假設有兩個觸摸,觸摸1出現在左側,觸摸2出現在右側,您會如何預期變量的行爲? 「touchLeftDown」和「touchRightDown」都是「真」嗎?如果在左邊有兩個觸點,那麼該怎麼辦? –
如果1同時觸摸每側,則兩者都爲YES。如果一側有2個,另一側有1個,如果有觸摸,無論該側的觸摸次數如何,這兩個布爾將是肯定的。 –
您可以通過在countTouches結尾計算leftTouches - rightTouches來獲得您想要的touchStep,但是您的編輯提到TOUCH_INCREMENT爲0,並且我沒有看到在任何地方進行了修改,它看起來像TOUCH_INCREMENT是一個常量。 –