• Система автоматизации с открытым исходным кодом на базе 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 = Истина.
Но почему то этот метод у меня не работает, все равно процедура вызывается.
 
Сверху Снизу