problem mit maxgui (maus)
Übersicht

![]() |
Mathias-KwiatkowskiBetreff: problem mit maxgui (maus) |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich habe nun ein folgendes problem.
bei mir wird MausX und MausY nicht zurückgeliefert. dabei müsste es gehen... habe nun folgendes mal versucht orginalcode: der nicht funktioniert Code: [AUSKLAPPEN] Case EVENT_MOUSEDOWN
tmpGadget = TGadget(EventSource()) If tmpGadget=Canvas Print "maus " + MausX + " " + MausY EndIf Case EVENT_MOUSEMOVE tmpGadget = TGadget(EventSource()) If tmpGadget = Canvas MausX = EventX () MausY = EventY () EndIf der code der funktioniert: Code: [AUSKLAPPEN] Case EVENT_MOUSEDOWN
tmpGadget = TGadget(EventSource()) If tmpGadget=Canvas MausX = EventX () MausY = EventY () Print "maus " + MausX + " " + MausY EndIf Case EVENT_MOUSEMOVE tmpGadget = TGadget(EventSource()) If tmpGadget = Canvas MausX = EventX () MausY = EventY () EndIf kann es sein das EVENT_MOUSEMOVE nicht funktioniert? und wenn warum? desweiteren wie kann ich den abfragen ob einer im canvas links oder rechts geklickt hat? (so ne frage nebenbei ^^) hier der gesammte code Code: [AUSKLAPPEN] Import maxgui.Drivers
Global Screen:Int[2] Screen[0] = DesktopWidth() - 150 Screen[1] = DesktopHeight() - 150 Global Map:Int[501, 501] For x = 0 To 500 For y = 0 To 100 Map[x, y] = 1 Next Next Global Cam:Int[2] Cam[0] = 0 Cam[1] = 0 Global MausX:Int Global MausY:Int Global Win_Game:TGadget = CreateWindow("City Live 1.0", DesktopWidth() / 2 - screen[0] / 2, DesktopHeight() / 2 - screen[1] / 2, Screen[0], Screen[1], Null, WINDOW_TITLEBAR | WINDOW_MENU) Global Canvas:TGadget = CreateCanvas(0, 0, Screen[0] - 350, Screen[1] - 65, Win_Game) Global Slider:TGadget[2] Slider[0] = CreateSlider(Screen[0] - 350, 0, 16, GadgetHeight (Canvas) , Win_Game, SLIDER_VERTICAL) Slider[1] = CreateSlider(0, GadgetHeight (Canvas), GadgetWidth (Canvas), 16, Win_Game, SLIDER_HORIZONTAL) SetSliderRange(Slider[0], 0, 500) SetSliderRange(Slider[1], 0, 500) Global Wiese:TImage = LoadImage("Data\Tiles\Wiese.BMP") CreateTimer 600 While WaitEvent() Local tmpGadget:TGadget Select EventID() Case EVENT_MOUSEMOVE 'Print "MOVE!" Case EVENT_TIMERTICK RedrawGadget Canvas Case EVENT_GADGETPAINT SetGraphics CanvasGraphics(Canvas) Cls For x = Cam[0] To Cam[0] + GadgetWidth(Canvas) / 64 For y = Cam[1] To Cam[1] + GadgetHeight(Canvas) / 64 If Map[x, y] = 1 Then DrawImage Wiese, x * 64, y * 64 Next Next SetColor 255, 255, 255 DrawText Fps() + " " + MausX, 0, 0 Flip Case EVENT_WINDOWCLOSE End Case EVENT_MOUSEDOWN tmpGadget = TGadget(EventSource()) If tmpGadget=Canvas Print "maus " + MausX + " " + MausY EndIf Case EVENT_MOUSEMOVE tmpGadget = TGadget(EventSource()) If tmpGadget = Canvas MausX = EventX () MausY = EventY () EndIf Case EVENT_APPTERMINATE End End Select Wend Function Fps:Int() Global show:Int, counter:Int = MilliSecs(), count:Int If MilliSecs()-counter >= 1000 Then counter = MilliSecs() show = count count = 0 End If count :+ 1 Return show End Function |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Auch wenn ich es unwahrscheinlich finde, aber der Code ist nicht (Super)Strict dadurch kann es sein, dass BlitzMax irgendwo einen Unterschied in den Variablen findet. Zumindest würde mich so ein Ergebnis bei nicht-Strict auch nicht wundern, obwohl ich dergleichen hier nicht entdecken kann. Vielleicht hilft es ja.
Zitat: desweiteren wie kann ich den abfragen ob einer im canvas links oder rechts geklickt hat?
BlitzMax: [AUSKLAPPEN] EventData() = MOUSE_LEFT oder MOUSE_RIGHT
ZEVS PS: DebugLog ist so eine tolle Sache. Man kann sich ausgeben lassen, welcher Code mit welchen Variablen ausgeführt wird. Gleiches gilt für DebugStop. |
||
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, bevor ich auf das eigentliche Problem eingehe, hier ein paar Tipps:
Okay, nun zum eigentlichen Problem: Versuche das Canvas mit ActivateGadget zu aktivieren. Ein Mausklick ins Canvas hinein tut übrigens das gleiche. Beim EVENT_MOUSEDOWN enthält EventData() bzw event.data den Mausbutton-Code. (1 = links, 2 = rechts, 3 = mittlere, etc...) |
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
debug log meldet nichts ^^
und ich habe dein rat befolgt (superstrict) hier der code.... aber wie erwartet nich viel unterschied, und gleicher fehler... Code: [AUSKLAPPEN] SuperStrict
Import maxgui.Drivers Global Screen:Int[2] Screen[0] = DesktopWidth() - 150 Screen[1] = DesktopHeight() - 150 Local x:Int Local y:Int Global Map:Int[501, 501] For x:Int = 0 To 500 For y:Int = 0 To 100 Map[x, y] = 1 Next Next Global Cam:Int[2] Cam[0] = 0 Cam[1] = 0 Global MausX:Int Global MausY:Int Global Win_Game:TGadget = CreateWindow("City Live 1.0", DesktopWidth() / 2 - screen[0] / 2, DesktopHeight() / 2 - screen[1] / 2, Screen[0], Screen[1], Null, WINDOW_TITLEBAR | WINDOW_MENU) Global Canvas:TGadget = CreateCanvas(0, 0, Screen[0] - 350, Screen[1] - 65, Win_Game) Global Slider:TGadget[2] Slider[0] = CreateSlider(Screen[0] - 350, 0, 16, GadgetHeight (Canvas) , Win_Game, SLIDER_VERTICAL) Slider[1] = CreateSlider(0, GadgetHeight (Canvas), GadgetWidth (Canvas), 16, Win_Game, SLIDER_HORIZONTAL) SetSliderRange(Slider[0], 0, 500) SetSliderRange(Slider[1], 0, 500) Global Wiese:TImage = LoadImage("Data\Tiles\Wiese.BMP") CreateTimer 60 While WaitEvent() Local tmpGadget:TGadget Select EventID() Case EVENT_MOUSEMOVE 'Print "MOVE!" Case EVENT_TIMERTICK Hauptschleife() RedrawGadget Canvas Case EVENT_GADGETPAINT Malen(Canvas) Case EVENT_WINDOWCLOSE End Case EVENT_MOUSEDOWN tmpGadget = TGadget(EventSource()) If tmpGadget=Canvas Print "maus " + MausX + " " + MausY EndIf Case EVENT_MOUSEMOVE tmpGadget = TGadget(EventSource()) If tmpGadget = Canvas MausX = EventX () MausY = EventY () EndIf Case EVENT_APPTERMINATE End Case EVENT_GADGETACTION End Select Wend Function Hauptschleife() End Function Function Malen(TmpGadget:Tgadget) Local x:Int Local y:Int SetGraphics CanvasGraphics(TmpGadget) Cls For x = Cam[0] To Cam[0] + GadgetWidth(TmpGadget) / 64 For y = Cam[1] To Cam[1] + GadgetHeight(TmpGadget) / 64 If Map[x, y] = 1 Then DrawImage Wiese, x * 64, y * 64 Next Next SetColor 255, 255, 255 DrawText Fps() + " " + MausX, 0, 0 Flip End Function Function Fps:Int() Global show:Int, counter:Int = MilliSecs(), count:Int If MilliSecs()-counter >= 1000 Then counter = MilliSecs() show = count count = 0 End If count :+ 1 Return show End Function |
||
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast zwei mal ein Case EVENT_MOUSEMOVE. Nur das erste, leere Case wird ausgeführt. | ||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
omg ja danke... viele bäume und doch kein wald oder wie war das?
auf jedenfall danke für eure schnellen hilfen. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group