Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
isiprimax
Anmeldungsdatum: 02.01.2009 Beiträge: 77
|
Verfasst am: 25.01.2009, 01:31 Titel: Maus über Event... Fehler !?! |
|
|
Hi,
Ich versuche mich grade an kleinen Spielchen. Nun will ich das über Maus steuern. Wen ich nun so die Werte auslese (kurzer code!)
Code: |
'Wieso wird die X Koordinate nicht richtig zurückgegeben?
#Include "fbgfx.bi"
Using FB
Screen 18
Dim e As EVENT
Dim As Integer mausx,mausy
Do
Sleep 1
If (ScreenEvent(@e)) Then
Select Case e.type
Case event_mouse_button_press
mausx = e.x
mausy = e.y
Print "Maus x:";mausx;" y:";mausy
End Select
EndIf
Loop Until InKey = Chr(27)
Sleep
|
bekomme ich als X Koordinate nur 1 und die Y Koordinate stimmt. Ich weiss nun auch nicht ob ich den Fehler mache, oder in FB der Fehler steckt.
FB_Versionen : 0.20 und 0.21 beides selbe situation!
mfg |
|
Nach oben |
|
 |
isiprimax
Anmeldungsdatum: 02.01.2009 Beiträge: 77
|
Verfasst am: 25.01.2009, 01:43 Titel: |
|
|
... War falsch |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 25.01.2009, 12:02 Titel: |
|
|
e.x scheint mir hier den Mausbutton zurückzuliefern. Dann also ein Fehler des fbc. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Muttonhead

Anmeldungsdatum: 26.08.2008 Beiträge: 565 Wohnort: Jüterbog
|
Verfasst am: 25.01.2009, 21:47 Titel: |
|
|
Ich glaub das ist kein Fehler von FB sondern liegt an der Arbeitsweise von
SCREENEVENT. Im UDT e liegt immer das letzte Ereignis, und das ist der Klick mit der linken Maustaste, deswegen ist dein e.x =1 weil in dem Fall die gleiche Speicherstelle mit der Information für die gedrückte Maustaste gefüttert wird (also eigentlich e.button)
deine Mauskoordinaten kannst du also nicht bei event_mouse_button_press ermitteln sondern nur bei
EVENT_MOUSE_MOVE.
Denn nur bei dem Event enthält dein UDT e auch die richtigen Daten
Code: | #INCLUDE "fbgfx.bi"
USING FB
SCREEN 18
DIM e AS EVENT
DIM AS INTEGER mausx,mausy
DO
SLEEP 1
IF (SCREENEVENT(@e)) THEN
SELECT CASE e.TYPE
CASE event_mouse_button_press
PRINT "Maus x:";mausx;" y:";mausy
case EVENT_MOUSE_MOVE
mausx = e.x
mausy = e.y
END SELECT
ENDIF
LOOP UNTIL INKEY = CHR(27)
SLEEP |
Mutton |
|
Nach oben |
|
 |
|