| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
isiprimax
Anmeldungsdatum: 02.01.2009 Beiträge: 77
|
Verfasst am: 25.01.2009, 00: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, 00:43 Titel: |
|
|
| ... War falsch |
|
| Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4713 Wohnort: ~/
|
Verfasst am: 25.01.2009, 11: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: 571 Wohnort: Jüterbog
|
Verfasst am: 25.01.2009, 20: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 |
|
 |
|