Frage zur Selfmade Routine
Übersicht

Ronon_DexBetreff: Frage zur Selfmade Routine |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo Zusammen,
Ich wollte euch mal fragen was an der Routine die Ich geschrieben habe, schlecht bzw gut ist und was ich Verbessern könnte. Ich hoffe man kann sie nicht total in die Tonne klopfen weil sie bei mehreren Anwendungen garnicht funktionieren wird. BlitzBasic: [AUSKLAPPEN]
mfg Ron |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du solltest MouseHit zwischenspeichern damit du mehrere Buttons machen kannst. | ||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Problem bei MouseHit ist ja, dass jeder weitere Aufruf 0 zurückgeben wird, d.h. wenn Du jetzt deine Funktion aufrufst, und anschließend eine andere Funktion, die mit MouseHit arbeitest, aufrufst, wird diese niemals erfahren, dass die Maustaste gedrückt wurde. Abhilfe schafft eine Global![]() |
||
Starfare: Worklog, Website (download) |
Ronon_Dex |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Würde es auch FlushMouse tun oder sollte ich wirklich den Mausklick zwischenspeichern ? | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zwischenspeichern, denn Flushmouse löscht ja nur die gespeicherten Klicks. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich speichere auch immer die Mauskoordinaten zwischen. Und zwar auch global zu Beginn des Hauptschleifendurchlaufs. | ||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
JamaginBetreff: ButtonClick |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Ich würde das so machen! Ist zwar fast gleich wie deines! lg. Jamagin Code: [AUSKLAPPEN] Graphics3D 800, 600, 16, 2 SetBuffer BackBuffer() SeedRnd MilliSecs() Global vsync = CreateTimer(60) Global mx, my, ButtonClick = 0 Global greenButtontext$ = "ICH BIN DER GRUENE BUTTON...!" FlushKeys() : FlushMouse() Repeat WaitTimer (vsync) mx = MouseX() : my = MouseY() Color 255, 255, 255 : Rect 750, 0, 50, 50, 0 Color 255, 255, 255 : Rect 550, 50, 50, 50, 0 SubProgramm() Select ButtonClick Case 1 ; Programm beenden End Case 2 ; einen anderen Button wählen Text 10, 30, greenButtontext$ Case 3 ; und so weiter ... End Select Text 10, 10, "mx= "+mx+" my="+my+" ButtonClick="+ButtonClick Flip 0 Cls Until KeyHit(1) End Function SubProgramm() ; Programm schließen If mx > 750 And my < 50 If RectsOverlap (mx, my, 1, 1, 750, 0, 50, 50) Color 255, 0, 0 : Rect 751, 1, 48, 48, 1 If MouseHit(1) Then ButtonClick = 1 EndIf ElseIf mx > 550 And mx < 600 And my > 50 And my < 100 If RectsOverlap (mx, my, 1, 1, 550, 50, 50, 50) Color 0, 255, 0 : Rect 551, 51, 48, 48, 1 If MouseHit(1) Then ButtonClick = 2 EndIf Else If MouseHit(1) Then ButtonClick = 0 ButtonClick = 0 EndIf End Function |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist so nicht sinnvoll. ButtonClick gibt ohne return keinen Wert zurück (und ohne Klammern sowieso nicht) und im Prinzip sollte Mousehit in eine Globale Variable kommen, wofür du hier nur einen komplizierten Umweg nimmst. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Xeres
Aha! Sollte ButtonClick einen Wert zurückliefern? Wieso, das tut es ja, weil die Variable Global ist. Die letzte Zeile in der Funktion löscht ja nur den ButtonClickwert wenn man außerhalb der Buttons herumklickt und das sollte ja vermieden werden, denn wenn man außerhalb klickt und dann mit der Mouse über das X für Programm beenden fährt (rotes Rechteck) wird es auch beendet und das soll aber erst beendet werden, wenn man im Bereich dessen draufklickt! Ansonsten habe ich die Fragestellung einfach falsch verstanden! Sorry! lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach, mein Fehler; ich hielt ButtonClick für die Funktion... Um den Mausklick überall zu haben und Funktionen wirklich nützlich zu machen (Parameter benutzen statt Hardcoden!) würde ich es aber so ähnlich machen:
BlitzBasic: [AUSKLAPPEN] Global gfx_w = 400, gfx_h = 600 Statt Text, kann man auch ein Bild/Bilder benutzen, aber: Alles was oft und überall benutzt wird 1x in Variablen speichern und ruhig für spezifische Problemstellungen eine Hilfsfunktion benutzen, da bleibt die Übersicht gewahrt und man kann sie sicherlich noch mal irgendwo gut gebrauchen. Ronon_Dex war also schon ganz gut dabei. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group