Используйте валидацию для метода UITextFieldDelegate
, например, ниже, как:
Вы могли попробовать что-то подобное для "перетаскивания прямоугольников" в Windows. При удержании кнопки мыши на чем-то Вы не запускаете операцию перетаскивания до перемещений мыши вне небольшого региона вокруг местоположения мыши вниз. Так как причина - это, очень трудно сохранить курсор на том же пикселе при нажатии.
Таким образом, первая попытка могла быть (int)e.getX() >= this.mTouchX + DEAD_ZONE
и подобный для другого случая, где DEAD_ZONE
маленькое целое число.
Это не имеет дело с оборачиванием в том же штрихе, как бы то ни было. Вы могли иметь дело с этим, только поворачивая налево, когда текущая позиция, по крайней мере, DEAD_ZONE
пиксели слева от последней позиции после поворачивания направо, и наоборот.
Одна очевидная проблема состоит в том, которые нигде не делают Вы принимаете во внимание время начиная с последнего касания.
Я предложил бы, чтобы Вы рассматривали касание плееров как выражение желаемого перемещения на аналоговом диапазоне от -x/+x
и -y/+y
, затем выполните фактическое перемещение в другом месте на основе времени.
Например.
objectPos += objectPos + (joyPos * timeDelta * maxSpeed);
Таким образом, если максимальная скорость Вашего объекта является 10ms-1, и палец плееров в 0,5 на панели управления затем, объект переместил бы 5 метров каждую секунду. Если бы Ваша игра достигает 10 футов в секунду затем каждый кадр, объект переместил бы 0,5 метра.
Эти персонажи являются вымышленными, но надо надеяться демонстрируют потребность разделить управление от перемещения и затем фактора вовремя.