Если вы ссылаетесь на панель «скорость» в TrainYard, этого легко достичь, используя изображения «state» для «Press» и «Normal» (как обычная кнопка), а затем установив простой «background»образ.Это все в графике, более или менее.
Вообще говоря, код просто проверяет, было ли касание «кнопки», а затем «блокирует» ось Y и следит за осью XДвижение.Как только касание «отключено от кнопки» с помощью «коэффициента» в X или Y, вы просто «отпустите» (не отпускайте, когда касание сначала оставляет кнопку, дайте им окно, чтобы прикоснуться к кнопке, которая ей подходит, но дайте им гораздо большее окно для «отпускания», чтобы «слайд» мог чувствовать себя более естественно и не требовал абсолютной точности вдоль оси X).
Если ваша «кнопка ползунка» на «0» расположенана ccp (25, 15) по отношению к фону и расположен на ccp (100, 15) на «100», тогда вы будете использовать следующее для определения «текущего значения» на основе текущей позиции «ползунка кнопок»:
// constants
#define SLIDER_MIN 0.0f;
#define SLIDER_MIN_X 25.0f;
#define SLIDER_MAX 100.0f;
#define SLIDER_MAX_X 100.0f;
#define SLIDER_TICKS (SLIDER_MAX_X - SLIDER_MIN_X);
#define SLIDER_RATIO (SLIDER_TICKS / SLIDER_MAX)
// sliderButton should be a child of a node containing the background
// it's X/Y should be relative to that parent, and the "slider bar" should
// either be the parent or be attached to the parent in the same way
// assume: sliderButton.position.x = 63
float sliderCurrent = sliderButton.position.x - SLIDER_MIN_X;
// sliderCurrent = 38
float currentValue = sliderCurrent / SLIDER_RATIO;
Это приводит к следующему:
SLIDER_TICKS = 100 - 25;
// SLIDER_TICKS = 75
SLIDER_RATIO = 75 / 100;
// SLIDER_RATION = .75
sliderCurrent = 63 - 25;
// sliderCurrent = 38
currentValue = 38 / .75
// currentValue = 50.66666666667
Затем вы можете выбрать ceil () или floor () это значение, чтобы получить целое число, или вы можете просто использоватьвозвращаемое значение (зависит от вашей логики на самом деле).
Мое предложение будет заключаться в том, чтобы спроектировать ваше произведение искусства таким образом, чтобы ваша отметка "50%" была "мертвой".Другими словами, когда ваш игрок помещает ползунок в секцию 50%, вы можете получить значение «50.0» из приведенного выше кода без использования ceil () или floor ().
Но это полностью графическое управление ... состояния "нажатия" и "нормального" кнопки ползунка, а также изображение, на котором скользит "кнопка ползунка" ("фон"), полностью соответствуютВы.
ПРИМЕЧАНИЕ. Зафиксируйте ось X, чтобы она не двигалась ни влево, ни вправо больше, чем это подходит для вашей работы, и полностью заблокируйте ось Y, как уже упоминалось.