Moin,
es ist etwas Zeit ins Land gegangen, aber nun habe ich auch wieder mehr Zeit für die Entwicklung. Die Funktion achtet jetzt auf touchend mouseup keydown und solange man den Schalter nicht gedrückt hält und hin und her schiebt, funktioniert das alles auch. Zusätzlich unterbreche ich den Event listener, der für das aktualisieren der Zustände verantwortlich ist, sobald man die Schalter benutzt hat. Aktueller Ablauf ist jetzt:
Zustände aktualisieren, wenn der Socket onUpdate() auslöst
Wenn z.B. ein Schalter geändert wurde (touchend ...), dann stoppe Aktualisierung, sende neuen Zustand, starte Aktualisierung
Dieses Flackern tritt immer noch auf, doch ich denke, dass es an dem Framework liegt, das ich für die Darstellung benutze. Das hat ein paar Kinderkrankheiten und sendet unter anderem ein Event, bevor die Animation durchgelaufen ist, was schon für ordentlich Verwirrung gesorgt hat. Ich muss wohl noch ein paar Timeouts/waits einfügen, damit eine State-Änderung erst als abgeschlossen gilt, wenn die betroffenen Elemente geändert wurden und auch mit den Animationen fertig sind.
Den Code von VIS habe ich mir angesehen und konnte auch ein paar Tricks finden. Auch deinen (@Scrounger ) Code für die Widgets habe ich gelesen, konnte jetzt aber nicht die Stelle finden, an der ein neuer Zustand gesendet wird.