• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

App inventor отличить непосредственное изменения ползунка от программного

Sany81

New member
Добрый день.
Как в App inventore отследить было ли изменение ползунка программное или непосредственное?
Проблема в том, что есть 3 ползунка(3 составляющих цвета RGB), при изменении которых вызывается процедура передачи цвета на контроллер.
Есть канва, при касании или движении по которой определяется цвет точки и меняются ползунки согласно этого цвета. Т.е. меняются все 3 ползунка . При этом каждый бегунок вызывает процедуру.
К примеру начальный цвет был 0/0/0
Прикоснулись на канве к точке с цветом 255/255/255
На контроллер в этот момент будет передано 3 разных значения цвета:
255/0/0/
255/255/0
255/255/255
Как этого избежать? Как отловить что ползунок был изменен программно?
Пробовал создать глобальные переменные sR/sG/sB = истина
В момент, когда происходит касание по канве присваиваю sR/sG/sB = ложь
В момент когда происходит событие изменения ползунка, проверяю, если нужная переменная = истина тогда выполнить передачу цвета на контроллер. И после условия присваиваю нужной переменной значение Истина.

Т.е. по моей логики должно было бы быть так:
Изначально sG=Истина;
При непосредственном изменении слайдера переменная sG всегда будет равна ИСТИНА и всегда будет выполняться нужная процедура.
Если же изменение слайдера происходит программно, то переменная sG=Ложь, в событии изменения слайдера проверяем sG=Ложь, поэтому не вызываем процедуру и присваиваем sG = Истина.
Но почему то этот метод у меня не работает, все равно процедура вызывается.
 
Сверху Снизу