In Lazarus Objekte mit Timer bewegen?

1 Antwort

Wenn du das Event triggerst, welches den Fahrstuhl starten soll, musst du in dessen Handler den Timer starten, zuvor aber noch einen Zielwert setzen. Der Timer sollte nun je Intervall die Position des Fahrstuhls ändern und dabei prüfen, ob der Zielwert bereits erreicht wurde. Wenn Letzteres der Fall ist, musst du den Timer explizit stoppen.

Nutze die Dokumentation und schau hier für ein TTimer-Beispiel.

Mia12358 
Fragesteller
 09.06.2018, 18:49

ja, aber wie und wo genau setze ich den Zielwert ein?

0
regex9  09.06.2018, 19:44
@Mia12358

Schau dir die Variable start in dem oben verlinkten Beispiel an. Sie mag dort zwar eine etwas andere Rolle spielen, aber letzten Endes hat sie (als Instanzattribut) den gleichen notwendigen Gültigkeitsbereich.

0
Mia12358 
Fragesteller
 11.06.2018, 15:33
@regex9

Hllo, ich hab nochnal ne Frage, ich würde gerne sagen fahre so und so lange

Ich hab schon gesagt:

If (Etage=+1) // Etage runter

Then begin

(ich müsste hin, fahre z.B. 3 Sekunden)

Timerfahrstuhl.Enabled:=false

End;

Wie sag ich ihm die Zeit?

0
regex9  11.06.2018, 16:01
@Mia12358

Zähle die Timer-Intervalle einfach mit und stoppe den Timer dann, wenn die gewünschte Zeit erreicht ist.

Pseudocode:

pastTime = 0
delayToWait = 3

function onTimerElapse:
    pastTime += 1

    if pastTime == delayToWait:
        stopTimer()
        pastTime = 0
1
Mia12358 
Fragesteller
 13.06.2018, 13:07
@regex9

Vielen Danke nochmal, hab es jetzt endlich hinbekommen :)

Allerdings eine Frage noch, ich hab jetzt Türen eingebaut und Rahmen wo die Etage ist und alles. Aber die Buttons sind trotzdem noch über der Tür. Kann man die irgendwie unter eine Grafik packen? Also die Türen sind halt Bilder und die Buttons sollten gerne wenn die Türen zu gehen, weg sein

0
regex9  13.06.2018, 13:18
@Mia12358

Die Methoden SendToBack und BringToFront sollten auch für Buttons verfügbar sein. Andernfalls gibt es sicherlich eine Eigenschaft wie Opacity oder Visibility, die du je nach Situation beeinflussen kannst.

1