Sehr einfache kurze Frage Fensterbewegung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

WEBLink

Betreff: Sehr einfache kurze Frage Fensterbewegung

BeitragSo, Sep 17, 2006 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
HI, hier erstmal der code

Code: [AUSKLAPPEN]
If ImageRectCollide(mouse, mauskorx, mauskory,0,fensterposx,fensterposy,296,22) Then maushand = 1 : If mausdown Then fensterposx =  mauskorx  : fensterposy = mauskory


Das Bild des Fensters wird jetzt so verschoben das der Mauszeiger auf die linke
obere Ecke liegt.

Welche Formel brauch ich das, dass fesnetr an seiner Position bleibt an man es verschieben kann.

Hagbard

BeitragSo, Sep 17, 2006 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics 640, 480, 0, 2

;Mausgrafik erstellen und malen
Maus = CreateImage( 16, 16 )
SetBuffer ImageBuffer( Maus )
Color 160, 160, 160
Rect 0, 0, 16, 2
Rect 0, 0, 2, 16
Rect 2, 2, 12, 2
Rect 2, 2, 2, 12

;Bild erstellen & malen
Bild = CreateImage( 100, 100 )
SetBuffer ImageBuffer( Bild )
Color 60, 23, 160
Rect 0, 0, 21, 34, 1
Rect 56, 12, 44, 23, 1
Color 255, 255, 255
Rect 0, 0, 100, 100, 0

;Bildkoordinaten
BildX = 100
BildY = 100

;Bildmaße
BildBreite = ImageWidth( Bild )
BildHoehe = ImageHeight( Bild )

;Mausstadien
Const NORMAL = 0 ;Nicht gedrückt
Const HIT = 1 ;wie MouseHit(), also grade gedrückt
Const DOWN = 2 ;wie MouseDown(), also gedrückt gehalten
Const UP = 3 ;Soeben losgelassen

HidePointer

SetBuffer BackBuffer( )

While Not KeyHit( 1 )

Cls

;Aktuellen Mauskoordinaten
MausX = MouseX( )
MausY = MouseY( )

;Mausstadien wechseln
If MausStatus = NORMAL
;Von NORMAL zu HIT wechseln, wenn ma anfängt zu drücken

If MouseDown( 1 ) Then MausStatus = HIT

ElseIf MausStatus = HIT
;Von HIT zu DOWN wechseln, wenn man gedrückt hält.
;Von HIZ zu UP wechseln, wenn man loslässt/gelassen hat.

If MouseDown( 1 ) Then MausStatus = DOWN Else MausStatus = UP

ElseIf MausStatus = DOWN
;Von DOWN zu UP wechseln, wenn man loslässt. Sonst belassen.

If Not MouseDown( 1 ) Then MausStatus = UP

ElseIf MausStatus = UP
;Von UP zu NORMAL wechseln, dauerhaft losgelassen

MausStatus = NORMAL

EndIf


;Mausaktionen abfragen
If MausStatus = HIT
;Angefangen zu drücken.

;Nur hier muss man auf "Kollision" prüfen.
;Wenn man hier das Bild berührt, wird man es auch weiterhin tun,
;weil es ja mitkommen soll.

If MausX >= BildX And MausX <= BildX + BildBreite

If MausY >= BildY And MausY <= BildY + BildHoehe

;=> Bild wird geschoben
BildSchieben = True

EndIf

EndIf

ElseIf MausStatus = UP
;Aufhören zu drücken

;Jetzt kann man das Bild wieder freilassen
BildSchieben = False

EndIf


;"Schiebung" prüfen
If BildSchieben = True

;Differenz von der akt. Position zur letzten Position addieren
BildX = BildX + ( MausX - MausXAlt )
BildY = BildY + ( MausY - MausYAlt )

EndIf

;Bild malen
DrawImage Bild, BildX, BildY

;Maus malen
DrawImage Maus, MausX, MausY

Flip

;Position zum errechnen der Differenz speichern
MausXAlt = MausX
MausYAlt = MausY

Wend

End


versuch es zu verstehen.
Es ist nicht von mir!

WEBLink

BeitragSo, Sep 17, 2006 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
k, funzt danke

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group