Domino 9 und frühere Versionen > ND9: Entwicklung
Sommerloch - Arcanoid mit Notes :-) - jetzt mit Spiel !
jBubbleBoy:
Wann und wie soll der Schläger bewegt werden?
Der Code sollte so schnell wie es nur geht ausgeführt werden, um keine Zeitverzögerungen hervorzurufen. Deshalb finde ich ja die Ansicht so ungünstig ;)
iukhdh:
Der Schläger kann ruhig im Sekundentakt bewegt werden, denke ich. Mal schauen.
Ich gebe es offen zu, dass sich meine Programmierkenntnisse im Notes auf Formelsprache und etwas Script beschränken. Grundsätzlich hört sich die Sache mit JS natürlich optimal an, aber da stoße ich an meine Grenzen.
Außerdem bleibe ich dabei ... So ein Spiel in einer Ansicht zu realiseren ist sowas von doof, das muss man einfach versuchen ;D
Und notfalls muss ich mir ein etwas langsameres Spiel aussuchen, Schach z.B. :)
(wenn ich nur wüsste, wie man ein Schachspiel programmiert ;) )
jBubbleBoy:
der JS Timer in einer Maske geht so:
1. Erstelle eine LS-Schaltfläche/Button (keine Maskenaktion), dieser kann auch verborgen sein. Gebe diesem einen eindeutigen Namen, letzter Reiter bei den Feldeigenschaften - das ist der HTML-Tab, im folgenden Beispiel heißt dieser: NotesAction
2. Maskenereignis JS-Header, Typ Client nicht vergessen, mit folgendem Code:
--- Code: ---var COUNT = 300;
function runNotesAction() {
try {
document.forms[0].NotesAction.click();
setTimeout ("runNotesAction()",COUNT);
} catch (e) {}
}
--- Ende Code ---
die Variable COUNT enthält den Abstand in Millisekunden und könnte zur Steuerung der Spielgeschwindigkeit verwendet werden :)
3. Maskenereignis onLoad, Typ Client nicht vergessen, mit folgendem Code:
--- Code: --- try {
setTimeout ("runNotesAction()",COUNT);
} catch (e) {}
--- Ende Code ---
Mehr braucht man an JS an dieser Stelle nicht, die Schaltfläche enthält deinen LS-Code Aufruf, wenn dieser sehr lange braucht dann ruckelt es ... dehalb solltest du die Zeit deiner LS-Funktion messen. Für so etwas habe ich mir eine kleine Hilfsklasse geschrieben, welcher in Millisekunden misst und ausgibt:
--- Code: ---Class times
stc As Variant
ftc As Variant
tps As Variant
Sub new
stc = Getthreadinfo(6)
End Sub
Function getTime As String
Dim t As Variant
ftc = Getthreadinfo(6)
tps = Getthreadinfo(7)
t = (ftc - stc) / tps
getTime = Format(t * 1000,"0,000")
End Function
End Class
--- Ende Code ---
iukhdh:
Jetzt komm ich nochmal mit dem Notestimer ...
Ich habe jetzt mal folgende Vorgehensweise getestet:
Notestimer auf 5 Sekunden - löst folgende Aktionen aus:
Position des Balls wird berechnet - Ansicht wird aktualisiert
Sleep 1
Position des Balls wird erneut berechnet - Ansicht wird aktualisiert
Sleep 1
Position des Balls wird nochmals berechnet - Ansicht wird aktualisiert
Nach meinem Verständnis müsste der Code nun innerhalb der 5 Sekunden dreimal die Ansicht aktualisieren, sodass der Ball 3 Positionen bewegt wird. Er bewegt sich auch, aber die Ansichtsaktualisierung erfolgt nur einmal, dh. er hüpft über drei Positionen ohne dass man die Zwischenschritte sieht.
Woran könnte das liegen? Wird während der 5 Sekunden der Event zwar berechnet, aber nur das Endergebnis des Codes nach 5 Sekunden präsentiert?
jBubbleBoy:
und wenn der Timer auf 1 Sekunde gestellt wird und nur einmal die Ballposition pro Lauf berechnet wird, wie sieht es dann aus?
Ansicht aktualisieren machst du mit uiWorkspace.viewRefresh?
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln