Startseite › Foren › Deutsches LiveCode-Forum › Card wechseln per Zeitsteuerung?
Schlagwörter: Bildschirmschoner, Zeitsteuerung
- Dieses Thema hat 7 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 5 Jahren, 7 Monaten von hGau.
-
AutorBeiträge
-
-
April 29, 2019 um 16:15 Uhr #14415
Hallo zusammen,
ich habe mit LiveCode eine Art Kioskanwendung gemacht, mit der sich User über unser Institut informieren können.
Bisher hatte ich sowas mit Adobe Director erstellt, aber da das nicht mehr „lebt“, habe ich jetzt zu LiveCode gewechselt.Meine Frage:
Die Anwendung soll noch einen eigenen Bildschirmschoner bekommen. Wenn also eine der „Kioskseiten“ länger als z.B. 5 Minuten steht, ohne dass eine Eingabe erfolgte, soll eine Card aufgerufen werden, die eine Bildschirmschoner-Animation enthält. Von dort soll dann wieder nach einer gewissen Zeit auf die Startseite zurück gesprungen werden.In Director war so eine Zeitsteuerung kein Problem (go the frame Handler). Aber wie kann ich so etwas in LiveCode umsetzen?
LG
Hartmut -
April 29, 2019 um 18:24 Uhr #14419
Hallo Hartmut,
ich aktualisiere meine Uhr im Programm folgendermaßen :
(die Routine muss ich natürlich einmal im OpenStack mit UhrAnzeige starten, damit sie sich selber wieder starten kann)on UhrAnzeige
put the time into fld uhr of card id 1002
send UhrAnzeige to this stack in 250 milliseconds
end UhrAnzeigeKönnte mir vorstellen, dass dies auch so funktioniert :
on Bildschirmschoner
## steuere irgendwas
send Bildschirmschoner to this stack in 5 minutes
end BildschirmschonerBeste Grüße aus Bayern
Herby -
April 30, 2019 um 09:48 Uhr #14432
Hallo Herby,
vielen Dank für die schnelle Antwort. 🙂
Das ist eine gute Idee. Ich müsste aber noch eine Möglichkeit finden, sicherzustellen, dass der Aufruf nach 5 Minuten nur erfolgt, wenn in diesen 5 Minuten keine Usereingaben (mouseup) etc. erfolgt sind. Der Bildschirmschoner soll ja nur dann nach 5 Minuten kommen, wenn niemand das Programm bedient hat.
Wie könnte man das machen?
LG
Hartmut -
April 30, 2019 um 10:18 Uhr #14434
Hallo Herby,
ich weiß, ich nerve, aber bitte gewöhn Dir in dienem eigenen Interesse an, Strings (Eigennamen) in Anführungszeichen zu setzen. Sonst beisst Dich das irgendwann, da die Engine mit jeder Version weniger „rücksichtsvoll“ mit nicht offizieller Syntax umgeht!
on UhrAnzeige put the time into fld "uhr" of card id 1002 send "UhrAnzeige" to this stack in 250 milliseconds end UhrAnzeige on Bildschirmschoner ## steuere irgendwas ## send Bildschirmschoner to this stack in 5 minutes ## minutes gibt einen Error, so weit denkt die Engine nicht :-D send "Bildschirmschoner" to this stack in (5 * 60 seconds) end Bildschirmschoner
Weitersagen, danke! 🙂
-
April 30, 2019 um 10:21 Uhr #14436
Hallo Hartmit
willkommen im Forum!
Ich müsste aber noch eine Möglichkeit finden, sicherzustellen, dass der Aufruf nach 5 Minuten nur erfolgt, wenn in diesen 5 Minuten keine Usereingaben (mouseup) etc. erfolgt sind. Der Bildschirmschoner soll ja nur dann nach 5 Minuten kommen, wenn niemand das Programm bedient hat.
Wie könnte man das machen?Das ist aber schon fortgeschrittener Stoff, wie fit bist Du bereits in LC?
Auch in „Director“, von dem ich schon vor fast 20 Jahren zu LC bzw. seinen Vorfahren gewechselt war, ist es natürlich nicht mit einem einfachen „go to the frame“ getan. 😉
Gruß
Klaus
-
April 30, 2019 um 10:35 Uhr #14438
Hallo Klaus,
vielen Dank für die Begrüßung! 🙂
Ich habe viele Jahre mit Director gearbeitet. Bei LC bin ich noch am „warm werden“, wobei die Sprache wegen der Lingo-Ähnlichkeit kein großes Problem ist. Die Kiosk-Anwendung war nicht weiter schwierig für mich, weil sie nicht allzu komplex ist. Vorher hatte ich Hauke Fehrs Buch durchgearbeitet.
Was ich mit dem „go the frame“ meinte:
In Director konnte ich einfach im gtf-Script einen Zähler hochlaufen lassen. Wann immer im Programm eine Eingabe gemacht wurde, habe ich den Zähler wieder auf 0 gesetzt. So konnte ich sichergehen, dass er seine Zielzahl nur erreicht, wenn über längere Zeit keine Useraktion erfolgte – und dann erst zum Frame mit dem Bildschirmschoner springt.In LC gibt es prinzipbedingt diesen gtf-Ansatz nicht, daher bin ich etwas unsicher, wo ich so eine kontinuierliche Abfrage anbringen kann.
LG
Hartmut -
April 30, 2019 um 11:15 Uhr #14442
Hi Hartmut,
da kommen ein paar vage Erinnerungen hoch, ja, stimmt, Director musste man immer sagen „Nun bleib doch mal hier!“, bei LC „Nun geht doch mal woanders hin!“ 😀
OK, Dein Wunsch ist recht komplex, gehen wirs an!
Ein geSENDeter Befehlt ist hier natürlich auch nötig, aber wichtig ist ein FRONTSCRIPT, was alle Usereingaben registriert und dann weiterleitet.
Was benötigen wir:
1. Zuerst einmal alles sammeln, was als „User Interaktion“ (UI) gelten kann, also mouseup, keydown etc. und in ein Frotscript packen:global ZeitSeitLetzterUI on mouseup put the seconds into ZeitSeitLetzterUI ## OK, registriert, nun weitergeben! PASS mouseup end mouseup on keyup put the seconds into ZeitSeitLetzterUI PASS keyup end keyup ## etc. für alles, was Du für User Interaktionen hälst
2. Einen Befehl, der prüft, wieviel Zeit seit der letzten UI vergangen ist.
Der wird periodisch geSENDet und handelt entsprechend, wenn es Zeit ist.
3. Eine globale Variable, die den Zeitpunkt der letzten UI hält, damit wir das mit unserem Limit vergleichen können. Siehe oben…
4. Wir setzen diese Variable auf -> the seconds direkt „on openstack“ und INSERTen das Frontscript. Und wir rufen direkt das CHECKER Skript auf -> zeitabgelaufen
5. Dann benötigen wir einen Handler, der die ganze Zeit die abgelaufene Zeit überprüft und reagiert, wenn das Limit überschritten ist, der geht ins Stackskript:global ZeitSeitLetzterUI command zeitabgelaufen put the seconds into tAktuelleZeit ## Sofern Du das Limit auf 5 Minuten setzt: if tAktuelleZeit - ZeitSeitLetzterUI >= (5*60) then ## Zeit abgelaufen, mach Dein SCREENSAVER Ding: ## Resetten, falls nötig? ## put the seconds into ZeitSeitLetzterUI else ## Es ist noch Zeit, also weiterhin periodisch checken: send "zeitabgelaufen" to me in 10 secs end if end zeitabgelaufen
Yo, soweit meine Ideen, ich hoffe, das hilft.
Bei Bedarf weiterhin hier nachfragen!Gruß
Klaus
-
April 30, 2019 um 11:25 Uhr #14446
Hallo Klaus,
viiiielen Dank für deine Vorschläge, da bin ich hier ja genau an der richtigen Adresse! 🙂
Ich versuche das jetzt mal umzusetzen. Bei Problemen komme ich gerne nochmal auf dein Angebot zurück. 😉
LG
Hartmut
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.