MouseOver?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

BlackFire

Betreff: MouseOver?

BeitragDo, Aug 25, 2005 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leutz

Ich versuche gerade sowas wie ein MouseOver zu immitieren, also so ein Text der leuchtet wenn man mit dem Cursor drüber ist, doch leider wills mir nicht ganz gelingen. Der Code funktioniert, aber der Code reagiert zu langsam. Es dauert immer ne Sekunde bis der Text die Farbe verändert. Wie kann ich das optimieren? und Danke im Vorhaus Rolling Eyes

Code: [AUSKLAPPEN]

Graphics 640,480,32

SetBuffer BackBuffer()

String1$="Hello World (ist nur ein Testcode)"

;Text in die Mitte setzen
xpos=320-(StringWidth(String1$)/2)
ypos=240-(StringHeight(String1$)/2)

;Standartfarbe
Color 255,255,255

While Not KeyHit(1)
Cls

;MouseOver Abfrage
If MouseX() > xpos And MouseX() < (xpos+StringWidth(String1$))
   If MouseY() > ypos And MouseY() < (ypos+StringHeight(String1$))
      Color 255,0,0 
      Else Color 255,255,255
   EndIf
EndIf

Text xpos, ypos, String1$
 
Flip
Wend

End

Firstdeathmaker

BeitragDo, Aug 25, 2005 23:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Rechner ist lahm! Bei mir wechselt der Text sofort die Farbe, ohne Verzögerung. Der Code ist auch korrekt. Also kein Fehler fest zu stellen. Vielleicht hast du was im Hintergrund laufen das Systemressourcen frisst?
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

BlackFire

BeitragDo, Aug 25, 2005 23:49
Antworten mit Zitat
Benutzer-Profile anzeigen
AMD Athlon 64 3500, 512 MB DDR RAM, GeForce 6600, 250 GB S-ATA HD

Im Hintergrund laufen lediglich Firefox und Blitz3D

Möglich das ich es mir nur einbilde das es etwas langsam reagiert, ich weiss es nicht. Mir kommt es etwas zu langsam vor

Crono

BeitragFr, Aug 26, 2005 0:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich mach das immer so:

Code: [AUSKLAPPEN]

Graphics 640, 480, 16, 2
Setbuffer Backbuffer()

Repeat

  Color 255, 255, 255
  Text 162, 455, "Beenden"

  If RectsOverlap (x, y, 1, 1, 162, 455, 80, 10)
    mausklick = (Maus=1)
    If mausklick = 1 Then end
    Color 200, 0, 0
    Text 162, 455, "Beenden"
  End If

Until Keyhit(1)


Läuft auch auf meinm alten Rechner problemlos

Cu Crono[/syntax]
User posted image

BlackFire

BeitragFr, Aug 26, 2005 0:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja danke mal

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Aug 26, 2005 1:57
Antworten mit Zitat
Benutzer-Profile anzeigen
@BlackFire,
dein Code scheint nicht ganz in Ordnung zu sein, denn wenn ich mit der Maus rüber gehe dann seitlich weg und dann die Maus Y-Position aus dem Bereich bewege, dann leuchtet der Text immer noch rot. Soll das so sein? Wenn nicht, dann setze Standardcolor vor den If-Abfragen oder verzichte auf doppelte IF-Verschachtelung und frage viermal hintereinander mit And ab... Also:Code: [AUSKLAPPEN]
If MouseX() > xpos And MouseX() < (xpos+StringWidth(String1$)) And MouseY() > ypos And MouseY() < (ypos+StringHeight(String1$))

Vielleicht ist das die Trägheit die du meinst...

Bionical

BeitragFr, Aug 26, 2005 10:12
Antworten mit Zitat
Benutzer-Profile anzeigen
@BlackFire
Shalte mal den Debugger ab. Bei mir hats manchmal geholfen...
Das Leben ist zum Proggen da!

www.livingsoftware.at.tc
Mit selbstgehosteten Forum!
Das Forum ist leider gerade down.... Dank Funpic.de -.-
 

Dreamora

BeitragFr, Aug 26, 2005 10:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
und Blitz3D

heisst das die IDE oder eine Blitz3D anwendung? Im Fall von letzterem liegt es daran, dass Blitz3D anwendungen 100% Systemressourcen schlucken und deswegen alles sehr langsam wird.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BlackFire

BeitragFr, Aug 26, 2005 11:15
Antworten mit Zitat
Benutzer-Profile anzeigen
OK das Problem ist von hectic gelöst worden. DANKE

Dein Code ist perfekt, er weist nicht die geringste Verzögerung auf

Wink

soli

BeitragFr, Aug 26, 2005 11:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn man mit der Maus vom Text zur Seite, und dann nach oben geht bleibt der Text rot, das liegt daran das nur die inner Schleife ein "else" hat.

Ich würde das so machen
Code: [AUSKLAPPEN]

Graphics 640,480,16,2

SetBuffer BackBuffer()

String1$="Hello World (ist nur ein Testcode)"

;Text in die Mitte setzen
xpos=320-(StringWidth(String1$)/2)
ypos=240-(StringHeight(String1$)/2)

;Standartfarbe
Color 255,255,255

While Not KeyHit(1)
Cls

;MouseOver Abfrage

a= MouseX() > xpos And MouseX() < (xpos+StringWidth(String1$))
b= MouseY() > ypos And MouseY() < (ypos+StringHeight(String1$))

If a And b
   Color 255,0,0
Else
   Color 255,255,255
EndIf

Text xpos, ypos, String1$
 
Flip
Wend

End


.....und dein Code ist bei mir schnell genug, mit und ohne Debugger.
solitaire

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group