Zeitanzeige mit Hintergrund

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Hideki

Betreff: Zeitanzeige mit Hintergrund

BeitragMo, Dez 07, 2009 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
... folgendes Problem. Ich will mir eine Uhr programmieren habe aber das Problem das er die Zeit immer wieder über der alten rüberlegt - cls kann ich nicht nutzen weil ich nen hintergrundbild mit im Fenster hab und dann iss das dann weg. Kann ich das Image vielleicht seperat vom Fenster laden das CLS nur die alte zeit löscht...

Ausserdem läd er den Font aus der Datei nicht...


... so siehts aus...
---------------------------------------------------------------------------------------------------------------------------------------
; Fenster aufbauen
Graphics 490,405,32,2

Hintergrund = LoadImage ("Wallpapers/Wallpaper1.jpg")
DrawBlock Hintergrund, 0,0

; Font laden
Font = LoadFont ("data/StudioMN",25,1)
SetFont Font

; Zeit anzeigen
While Not KeyHit (1)
Locate 0,345
Write CurrentTime$ ()
Wend
---------------------------------------------------------------------------------------------------------------------------------------

wäre schön wenn ihr mir helfen könntet - danke...

blackgecko

BeitragMo, Dez 07, 2009 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hideki hat Folgendes geschrieben:
cls kann ich nicht nutzen weil ich nen hintergrundbild mit im Fenster hab und dann iss das dann weg

Dann malst du es eben nochmal. Kein Problem Wink

LoadFont lädt nur Schriften aus dem Windows Schriften Ordner. Gib einfach den Namen der Schrift und die Größe an.

Du solltest einen Timer in dein Programm einbauen (siehe CreateTimer, damit das Programm nur jede Sekunde aktualisiert, sonst hast du ganz schnell 100% CPU-Auslastung.)
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.
 

Hideki

BeitragMo, Dez 07, 2009 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
...das ging aber schnell Very Happy


schön... Shocked kannste das mal für mich posten - ich bin voll neu hier mit Basic... wenn ich das Hintergrund immer wieder neu aufbauen muss dann fängt das doch aber an zu flackern oder so - dis iss doch irgendwie unsinnig oder?

blackgecko

BeitragMo, Dez 07, 2009 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieh dir noch die Befehle SetBuffer, BackBuffer und Flip an. Damit flackerts nicht. Ich schreib ungern fertigen Code her rein, weil man dann dazu neigt, das einfach abzuschreiben und nicht drüber nachzudenken. Versuchs erst mal selbst und schreib nochmal wenn du absolut nicht weiterkommst.
Link zur deutschen Onlinehilfe (oder oben in der Leiste auf 'Hilfe' klicken)
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.
 

Hideki

BeitragMo, Dez 07, 2009 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
...mach ich...

da hast du recht - mit darüber nachdenken usw. Ich hab ja schon früher aufm Amiga in Basic programmiert - aber dagegen iss ja BlitzBasic 1000 mal besser...

Ich probier gerade den Timer einzubauen - definiert oben (klar) aber wo muss ich den dann aufrufen - vor der schleife oder?

blackgecko

BeitragMo, Dez 07, 2009 19:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Definieren vor der Schleife und dann in der Schleife vor dem Zeichnen (bzw vor dem Löschen) Waittimer aufrufen. Damit wird das Programm solange anghalten bis der nächste Timer'schlag' kommt.
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

mpmxyz

BeitragMo, Dez 07, 2009 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
WaitTimer muss in die Hauptschleife.
Sonst "bremst" der Timer den Computer nur einmal am Anfang.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
  • Zuletzt bearbeitet von mpmxyz am Mo, Dez 07, 2009 19:21, insgesamt 2-mal bearbeitet
 

Hideki

BeitragMo, Dez 07, 2009 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
okay hab ich so - jetzt blinkts aber im sekundentakt

blackgecko

BeitragMo, Dez 07, 2009 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Poste doch mal bitte deinen Code, dann kann ich dir sagen woran es liegt.

Nutze die Codetags:
[*code]
Code hier rein
[*/code]
(ohne Sternchen)
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.
 

Hideki

BeitragMo, Dez 07, 2009 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

; Fenster aufbauen

Graphics 490,405,32,2

;Timer
timer = CreateTimer (1)



; Font laden
Font = LoadFont ("data/StudioMN",25,1)
SetFont Font

; Zeit anzeigen
While Not KeyHit (1)
WaitTimer timer
Cls
Hintergrund = LoadImage ("Wallpapers/Wallpaper1.jpg")
DrawBlock Hintergrund, 0,0
Locate 0,345
Write CurrentTime$ ()
Wend

ozzi789

BeitragMo, Dez 07, 2009 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Du lädst das Bild in einem Loop, das Loadimage bitte vor die Schleife
Achja benützte Text , ist besser da es nicht in den Frontbuffer schreibt

Hier noch eine gute Erklärung zu Doubblebuffering

mfg
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

blackgecko

BeitragMo, Dez 07, 2009 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Und es muss
Code: [AUSKLAPPEN]
Waittier(timer)

heißen.

Ansonsten funktioniert das bei mir gut, was meinst du denn genau mit "blinken"?
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.
 

Hideki

BeitragMo, Dez 07, 2009 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
okay die klammern hab ich rum gemacht - es blinkt aber bei mir immer noch im sekunden takt


@ozzi789

blackgecko hat doch zu mir gesagt ich soll das Hintergrund immer wieder neu laden - ich find das ja auch unsinnig aber ich bin voll newbie in blitz basic...

Theoretisch versteh ich das ja mit dem DoubleBuffering aber ich weiß nicht wie ich das alles einbauen soll...

mpmxyz

BeitragMo, Dez 07, 2009 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
@blackgecko: Hast du Java? Wink
Ohne Klammern funktioniert das wunderbar...
Außerdem heißt es WaitTimer und nicht Waittier Smile
In BlitzBasic braucht man bei Funktionen nur Klammern, wenn diese auch etwas zurückgeben sollen.
Edit an Hideki: Du sollst das Bild neu zeichnen und nicht neu laden...
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
  • Zuletzt bearbeitet von mpmxyz am Mo, Dez 07, 2009 19:43, insgesamt einmal bearbeitet

count-doku

BeitragMo, Dez 07, 2009 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

bei CreateTimer wird in den Klammern die Zeit in Millisekunden angegeben.
Du hast 1 angegeben also wird es jede Millisekunde aktualisiert.
Nimm was um 60 dann geht es.

Ach und willkommen im Forum Hideki

mfg,
count-doku
  • Zuletzt bearbeitet von count-doku am Mo, Dez 07, 2009 19:44, insgesamt einmal bearbeitet
 

Hideki

BeitragMo, Dez 07, 2009 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich hab jetzt das image aus der schleife rausgeschoben und jetzt klappts bei mir auch - jetzt versteh ich das aber nicht mehr - ich hab doch CLS in der schleife - wieso bleibt den jetzt das bild auf einmal da???????

count-doku

BeitragMo, Dez 07, 2009 19:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil es nach jedem löschen wieder neu gezeichnet wird.

mpmxyz

BeitragMo, Dez 07, 2009 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Offtopic: Was ist denn heute mit euch allen los? Montag, Montag... Wink
@count-doku: CreateTimer verlangt eine Frequenz in Hertz.

@Hideki: Es wird ja nach dem Cls wieder gezeichnet.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
  • Zuletzt bearbeitet von mpmxyz am Mo, Dez 07, 2009 19:48, insgesamt einmal bearbeitet

Valnar

BeitragMo, Dez 07, 2009 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
P.S. man gibt bei Createtimer nicht die Zeit in Millisekunden an, sondern wie oft ein Durchlauf in der Sekunde geschehen soll.
Ein Wert von 60 entspricht dabei 60 FPS, ein Wert von 1 heisst also das es nur jede Sekunde aktualisiert wird.
[url][/url]

Eingeproggt

BeitragMo, Dez 07, 2009 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Wollen wir da mal ein wenig Aufräumen, also:

1.) Klammern bei Funktionsaufrufen sind in BB nur notendig, wenn man einen Rückgabewert haben will / die Funktion überhaupt etwas zurückliefert. Im Falle von WaitTimer gäbe es eine Rückgabe, die verwertet aber niemand, daher braucht man die Klammern nicht.

2.) Der Parameter bei CreateTimer gibt nicht die Zahl der Millisekunden an, wie du da schreibst count-doku. Sondern die Zahl der Frames pro Sekunde die man anstrebt. daher wäre 1 bei einer Uhr sogar ausreichend... Dennoch... falls man Interaktionen wünscht (Buttons etc) sollte man vlt auf 30 rauf gehen, bei flüssigen Spielen auch mal 50 oder 60.

mfG, Christoph.

EDIT: Juhu, Letzter...
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group