Drag'n'Drop

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Blitzkrieg Bop

Betreff: Drag'n'Drop

BeitragSa, Aug 21, 2004 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
So, kleine D'n'D Engine:
BlitzBasic: [AUSKLAPPEN]

Graphics 640,480,16,2

Global bild_1 = CreateImage(20,20)
SetBuffer ImageBuffer(bild_1)
Rect 0,0,20,20

SetBuffer BackBuffer()

Type objekt
Field x
Field y
Field aktiv
Field img
End Type

CreateObjekt(bild_1,100,200) ;image,x,y

Repeat
Cls

UpdateObjekt()

Flip
Until KeyHit(1):End

Function CreateObjekt(img,x,y)
o.objekt = New objekt
o\img = img
o\x = x
o\y = y
MidHandle o\img
End Function

Function UpdateObjekt()
For o.objekt = Each objekt
If ImageRectCollide(o\img,o\x,o\y,0,MouseX(),MouseY(),1,1)
If MouseHit(1) = True
o\aktiv = 1
EndIf
EndIf
If o\aktiv = 1
If MouseDown(1) = 1
o\x = MouseX()
o\y = MouseY()
Else
o\aktiv = 0
EndIf
EndIf
DrawImage o\img,o\x,o\y
Next
End Function
~ Hey Ho Let's Go ~

Triton

BeitragSa, Aug 21, 2004 18:31
Antworten mit Zitat
Benutzer-Profile anzeigen
aaaahhh, nennt sowas doch nicht immer Engine. Das ist bestenfalls ne kleine Routine.

Das Einlassventil eines Motors heisst ja auch nicht Einlass-engine, sondern eben erst der ganze Motor Wink
 

Blitzkrieg Bop

BeitragSa, Aug 21, 2004 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Krasses Beispiel Very Happy
Naja, hauptsache es funzt.

btw: Hättest du den ganzen Würfel Thread trashen müssen?
Waren doch nur die letzten 2 Post's daneben.
~ Hey Ho Let's Go ~

Mattis_the_brain

BeitragMo, Aug 23, 2004 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Nachmacher^^.... Is aber leider nicht so flexibel wie meine...
 

Blitzkrieg Bop

BeitragMo, Aug 23, 2004 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Kein Nachmacher.
2. Warum nciht so flexibel?
~ Hey Ho Let's Go ~

maximilian

BeitragMo, Aug 23, 2004 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab's mir jetzt auchmal angeschaut, ich kapier aber nicht wie man daraus was lernen soll. Confused
Ich finde, es ist noch nichtmal ne Routine. Für eine Fenster-Routine reicht es noch lange nicht.

Grüße,
LordChaos
 

Blitzkrieg Bop

BeitragMo, Aug 23, 2004 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Najao, hab ich auch nie wirklich behauptet.
Und zum lernen: Hab ich gesagt, man soll aus dem Code lernen? Very Happy
Ne aber im ernst:
1. wenig Code
2. relativ sauber geschrieben?! Question
Wenn man wissen will, wie es geht, kann man es durchaus verstehen.
~ Hey Ho Let's Go ~

maximilian

BeitragMo, Aug 23, 2004 22:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, hast recht. 8)

*jetztaberdochnochmalkritiksuch*

Hm, keine Kommentare. Laughing (nee, Scherz, sinde nicht so wichtig)

Grüße,
LordChaos
 

Blitzkrieg Bop

BeitragMo, Aug 23, 2004 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Smile Na geht doch Wink
~ Hey Ho Let's Go ~
 

OJay

BeitragMo, Aug 23, 2004 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrow es wird immer zentriert am mauscursor verschoben
Arrow man kann außerhalb klicken und die maus über das objekt bewegen, dann "springt" das objekt an den cursor
Arrow mischmasch von deutsch und englisch in variablen und funktionen
Arrow mousehit für routinen ungeeignet...verwendet der anwender es nocheinmal kommt es zu fehlfunktionen
Arrow code innerhalb von funktionen nicht eingerückt
Arrow weder funktionen noch programm sind beschrieben/kommentiert
Arrow ganz zu schweigen von einem header mit versions-, datums- und autoreninformationen

und du willst uns was von "relativ sauber geschrieben" erzählen... Rolling Eyes
einfach nur peinlich ist das. mehr nicht.

dominik

BeitragDi, Aug 24, 2004 10:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrow ganz zu schweigen von einem header mit versions-, datums- und autoreninformationen

also header und autoreninformation find ich jetzt zimlich unwichtig des is nur was für poser die angst haben das übersehen wird das es von ihnen ist.

Mattis_the_brain

BeitragDi, Aug 24, 2004 10:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum es nicht Flexibel ist? Na weil man damit nur Bilder verschieben kann... so wie der code jetzt aufgebaut ist... hier das ganze mal functionierend und "einigermaßen sauber":

BlitzBasic: [AUSKLAPPEN]

Type OBJ_DragDrop
Field PosX, PosY
Field SizeX, SizeY
Field RectSelect
End Type
Global OBJ.OBJ_DragDrop

Global DifX, DifY
Global MouseKey1

Function OBJ_CreateDragDrop(PosX, PosY, SizeX, SizeY)
OBJ.OBJ_DragDrop = New OBJ_DragDrop
OBJ\PosX = PosX
OBJ\PosY = PosY
OBJ\SizeX = SizeX
OBJ\SizeY = SizeY
Return(Handle(OBJ))
End Function

Function OBJ_UpdateDragDrop()
For OBJ = Each OBJ_DragDrop
If(MouseKey1)
If(PointRectColli(MouseX(), MouseY(), OBJ\PosX, OBJ\PosY, OBJ\SizeX, OBJ\SizeY))
DifX = MouseX() - OBJ\PosX
DifY = MouseY() - OBJ\PosY
OBJ\RectSelect = True
EndIf
EndIf

If(MouseDown(1))
If(OBJ\RectSelect = True)
OBJ\PosX = MouseX() - DifX
OBJ\PosY = MouseY() - DifY
EndIf
Else
OBJ\RectSelect = False
EndIf
Rect(OBJ\PosX, OBJ\PosY, OBJ\SizeX, OBJ\SizeY, 0)
Next
End Function

Function OBJ_ReturnX(id)
OBJ = Object.OBJ_DragDrop(id)
Return(OBJ\PosX)
End Function

Function OBJ_ReturnY(id)
OBJ = Object.OBJ_DragDrop(id)
Return(OBJ\PosY)
End Function

Function PointRectColli(x3, y3, x1, y1, x2, y2)
If(x3 =>x1 And y3 => y1 And x3 <= x1 + x2 And y3 <= y1 + y2) Return(True)
Return(False)
End Function
;end include

Graphics(640, 480, 16, 1)

obj1 = OBJ_CreateDragDrop(100, 100, 200, 100)
obj2 = OBJ_CreateDragDrop(100, 250, 100, 60)

SetBuffer(BackBuffer())
While(KeyHit(1) = False)
MouseKey1 = MouseHit(1)
OBJ_UpdateDragDrop()

Cls

Rect(OBJ_ReturnX(obj1), OBJ_ReturnY(obj1), 200, 100, 0)
Rect(OBJ_ReturnX(obj2), OBJ_ReturnY(obj2), 100, 60, 0)

Plot(MouseX(), MouseY())

Flip(True)
Wend
End


Hiermit kann man jetzt eigendlich alles verschieben was rechteckig ist...
 

Blitzkrieg Bop

BeitragDi, Aug 24, 2004 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Ojay:
Was soll das?
Das ist nur ein Denkanstoß und so genau wie du es nimmst..naja..
Außerdem ist ein ein so kleiner Code, aber wer dafür zu dumm ist Very Happy (scherz Wink)

Ehm und zu der flexibilität:
Eigentlich sah das Prog noch komplexer aus, man konnte alternativ ovale und rects verschieben/erstellen. Doch:
1. Kann man die per Createimage zaubern
2. Wird so etwas benutzt, sind es meist Pics, die verschoben werden. Also, ist ja nur ein Denkanstoß.
~ Hey Ho Let's Go ~

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group