BPS #13: Drag & Drop - Auswertung
Übersicht

![]() |
XeresModeratorBetreff: BPS #13: Drag & Drop - Auswertung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eine Drag & Drop Funktion macht die Steuerung für viele Nutzer einfacher und/oder bequemer - wer konnte sie umsetzen?
Das war die Aufgabe Postet hier eure Ergebnisse, Codes, Gedanken. Lernt von den anderen, seht euch deren Quelltext an und versucht euren eigenen zu verbessern. Diskussion Postet zu euren Codes stets eine kurze Erklärung mit euren Gedanken in denen ihr simpel gesagt die Frage "Wieso habe ich XY auf diese Art gelöst?" beantwortet. Beiträge, die nur den Code enthalten werden wir aus dem Thread entfernen. Nächste Aufgabe In zwei Wochen, wird die Musterlösung nach editiert und die nächste Aufgabe eingestellt. Viel Spaß & viel Erfolg! Musterlösung: BlitzBasic: [AUSKLAPPEN] ; BPS: Holzchopf - Drag & Drop |
||
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) |
- Zuletzt bearbeitet von Xeres am So, Okt 30, 2011 15:19, insgesamt 2-mal bearbeitet
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Um Drag&Drop zu ermöglichen muss man vor allem den Mausstatus kontrollieren: Wo befindet sich der Cursor? Wo befindet er sich beim Dragstart? Ist die Maus zur Zeit gedrückt?
Ebenso muss man das zu draggende Objekt im Auge behalten (was aber recht einfach ist, wenn es nur ein Objekt gibt). Weiterhin muss man sich merken, ob man gerade zu draggen anfängt, oder ob man im Dragvorgang ist. Dies kontrolliere ich mit der Variable dragStarted Um das Objekt am Raster einzurasten nutze ich etwas Integerdivision (der Rest wird immer abgeschnitten) Code: [AUSKLAPPEN] objekt_x = (objekt_x + fg / 2) / fg * fg ;Objekt an Raster ausrichten
objekt_y = (objekt_y + fg / 2) / fg * fg BlitzBasic: [AUSKLAPPEN] ;Grundeinstellungen mit Auflösung und Rastergröße Edit: Danke Holzchopf, habs verbessert! Will man mehrere Objekte draggen, könnte man zb Types verwenden: Beispiel |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
- Zuletzt bearbeitet von SpionAtom am Mo, Okt 17, 2011 13:32, insgesamt einmal bearbeitet
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
In der Zeile BlitzBasic: [AUSKLAPPEN] Else If mouse_x >= objekt_x And mouse_y >= objekt_y And mouse_y < objekt_x + ImageWidth(objektBild_1) And mouse_y < objekt_y + ImageHeight(objektBild_1) Thenist ein Fehler: du vergleichst Maus-Y-Koordinate mit Objekt-X-Koordinate =/ Ausserdem beginnt der Drag auch schon, wenn man die Maustaste ausserhalb des Objekts drückt und dann mit der Maus übers Objekt fährt. Um das zu verhindern müsste die Abfrage so lauten BlitzBasic: [AUSKLAPPEN] Else If MouseHit(1) And mouse_x >= objekt_x And mouse_y >= objekt_y And mouse_x < objekt_x + ImageWidth(objektBild_1) And mouse_y < objekt_y + ImageHeight(objektBild_1) Then Und danke für die (etwas ältere) typisierte Variante! mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
hazumu-kun |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habs wieder mit mehr als einem Objekt und Types gelößt ![]() BlitzBasic: [AUSKLAPPEN] ; ###### BPS #13 - Drag'n'Drop Die Kommentare dürften es ziemlich gut erklären. Die for each Schleife in der Mainloop könnte man bestimmt noch schwer optimieren! |
||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group