Mousedown() in Waitevent() Schleife
Übersicht

X0rBetreff: Mousedown() in Waitevent() Schleife |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn man z.B in einer Waitevent() Schleife prüft, wann eine Maustaste gedrückt gehalten wird, funktioniert das nicht. Ist ja auch klar, da er immer erst auf einen Maus Bewegungs oder Klick Event wartet.
Aber wie kann ich es nun so machen, dass ich in einer waitevent() schleife prüfen kann, ob ich gerade eine Maustaste gedrückt halte? |
||
![]() |
Byteemoz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst z.B. einen Timer benutzen:
Code: [AUSKLAPPEN] Graphics 400, 300
CreateTimer 50 Repeat WaitEvent() Select EventID() Case EVENT_MOUSEDOWN Print "Taste gedrueckt: " + EventData() Case EVENT_MOUSEUP Print "Taste losgelassen: " + EventData() Case EVENT_TIMERTICK If MouseDown(1) Print "Taste gehalten: 1" If MouseDown(2) Print "Taste gehalten: 2" If MouseDown(3) Print "Taste gehalten: 3" EndSelect Until AppTerminate() -- Byteemoz |
||
MaxIDE Community Edition: Summary | Bugs | Feature Requests | CVS Repository | Thread |
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ach man. Stimmt. Wie konnte ich das nur vergessen ![]() ![]() Noch eine Frage: Gibt es in BM sowas wie Getcolor, Wo mit man die Farbwerte von einem Pixel auf einer Koordinate zurückgeben kann? |
||
![]() |
Byteemoz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Direkter Zugriff auf den Backbuffer ist meines Wissens nicht möglich aber du könntest den Umweg über eine Pixmap nehmen:
Code: [AUSKLAPPEN] Function GetPixelColor:Int(x:Int, y:Int)
-- Byteemoz
Local pix:TPixmap = GrabPixmap(x, y, 1, 1) Return pix.ReadPixel(0, 0) EndFunction |
||
MaxIDE Community Edition: Summary | Bugs | Feature Requests | CVS Repository | Thread |
- Zuletzt bearbeitet von Byteemoz am Di, Jul 18, 2006 13:44, insgesamt einmal bearbeitet
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Pixmap coordinates out of bounds, sagt BM.
Aber warum readpixel auf x,y?? Müsste das nicht 1,1 sein? Denn wenn man z.B macht: local pix.TPixmap = GrabPixmap(20, 20, 1, 1) Dann ist seine width und height 1. x und y sind 20. Und bei readpixel(pix,x=20,y=20) würde das dann "außerhalb" der Pixmap sein, oder? |
||
![]() |
Byteemoz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Stimmt, sorry. Hab's korrigiert... | ||
MaxIDE Community Edition: Summary | Bugs | Feature Requests | CVS Repository | Thread |
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, Danke. | ||
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn man ein window gadget erstellt, dann klappt das nicht mehr.
Wie muss man das dann mache? Ich mal überlegt und: Code: [AUSKLAPPEN] window:TGadget=CreateWindow("Window",100,100,800,500,0,WINDOW_TITLEBAR | WINDOW_RESIZABLE | WINDOW_MENU | WINDOW_STATUS | WINDOW_ACCEPTFILES ) canvas=CreateCanvas(1,1,200,200,window) CreateTimer 50 Repeat WaitEvent() Select EventID() case EVENT_WINDOWCLOSE end Case EVENT_MOUSEDOWN Print "Taste gedrueckt: " + EventData() pressing=1 Case EVENT_MOUSEUP Print "Taste losgelassen: " + EventData() pressing=0 End Select If pressing=1 Then Print "Taste gehalten: 1" EndIf forever Hat jemand eine elegantere Lösung? |
||
![]() |
FOODy |
![]() Antworten mit Zitat ![]() |
---|---|---|
BRL.PolledInput:
Code: [AUSKLAPPEN] Rem
Currently only called by Graphics/bglCreateContext. Private for now, as it really needs a source:object parameter. End Rem Function EnablePolledInput( source:Object=Null ) [...] ' CODE End Function Einfach EnablePolledInput aufrufen. Dann kannste normal MouseDown(), KeyDown(), etc verwenden. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das was da ist würde schon funktionieren. Aber du musst den Canvas noch selektieren (der mouse event funktioniert nur innerhalb von canvas oder panel das active geflaggt ist) | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja eben. Für den canvas brauche ich das auch. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group