Eigene Gui

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

LINKed

Betreff: Eigene Gui

BeitragMi, Nov 05, 2008 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin gerade dabei eine eigene Gui zu erstellen.
Ich habe allerdings ein Problem mit den Fenstern. Crying or Very sad
Code: [AUSKLAPPEN]
For win.Window = Each Window
mx = MouseX()
my = MouseY()
mxs=MouseXSpeed()
mys=MouseYSpeed()
If RectsOverlap(win\X,win\Y,win\W,24,mx,my,1,1) Then
   If MouseDown(1) Then
      win\X=win\X+mxs
      win\Y=win\Y+mys
   EndIf
EndIf

Wenn ich die Maus beim bewegen des Fensters zu schnell bewege bleibt das Fenster stehen.
Wie bewegt man das Fenster solange bis man die Maus loslässt Question

Vielen Dank schonmal.

mfG LINKed

Tankbuster

BeitragDo, Nov 06, 2008 0:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal würde ich den Code so umstellen, denn du musst nicht für jedes Fenster eine neue Maus-Position berechnen lassen, da sie sich während dem Vorgang sowieso nicht verändert.
Code: [AUSKLAPPEN]
mx = MouseX()
my = MouseY()
mxs=MouseXSpeed()
mys=MouseYSpeed()
For win.Window = Each Window
If RectsOverlap(win\X,win\Y,win\W,24,mx,my,1,1) Then
   If MouseDown(1) Then
      win\X=win\X+mxs
      win\Y=win\Y+mys
   EndIf
EndIf

Zu deinem Problem hab ich aber nicht viel konstruktives beizutragen, da für mich alles ganz logisch aussieht ^^
Twitter
Download Jewel Snake!
Windows|Android

the FR3AK

BeitragDo, Nov 06, 2008 1:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie es geht weiss ich net aber warum das Fenster stehen bleibt kann ich dir sagen;)

Wenn du die Maus zu schnell bewegst liegt irgendwann mal die Maus ausserhalb des Fensterbereiches also wird das Fenster dadurch nicht mehr mitpositioniert und es bleibt stehen Wink


[EDIT]

Habe eine Lösung gefunden ^_^

Hier mal n kleiner Code wie ichs gemacht habe:
Code: [AUSKLAPPEN]

;KLICKE MIT DER MAUS AUF DAS WEISSE VIERECK UND VERSCHIEBE ES!

Graphics 800,600,32,2
SetBuffer BackBuffer()

x=100
y=100

movewindow=0

While Not KeyHit(1)
   Cls
   If MouseDown(1) Then
      If MouseX()>x And MouseX()<x+100 Then
         If MouseY()>y And MouseY()<y+100 Then
            movewindow=1
         Else
            Rect x,y,100,100,1
         End If
      Else
         Rect x,y,100,100,1
      End If
   Else
      movewindow=0
      Rect x,y,100,100,1
   End If
   
   If movewindow=1 Then
      x=MouseX()-50
      y=MouseY()-50
      
      Rect x,y,100,100,1
   End If
   
   Flip
Wend


So, in dem Code habe ich einfach eine Variable erstellt, die wenn die Maustaste gedrückt ist und die Maus im Fenster ist, auf 1 gesetzt wird solange bis die Maustaste wieder losgelassen wird. Während die Variable (Movewindow) auf 1 gesetzt ist, wird das Fenster an der Position der Maus positioniert, wenn die Variable auf 0 ist, dann wird das Fenster einfach an der stelle stehen gelassen, wo es ist ^_^

Ich hoffe das hilft.

mfg

Thunder

Betreff: Re: Eigene Gui

BeitragFr, Nov 07, 2008 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
For win.Window = Each Window
mx = MouseX()
my = MouseY()
mxs=MouseXSpeed()
mys=MouseYSpeed()
If RectsOverlap(win\X,win\Y,win\W,24,mx,my,1,1) Then
   If MouseDown(1) Then
      win\X=win\X+mxs
      win\Y=win\Y+mys
   EndIf
EndIf


Ich hab mir auch eine GUI geschrieben, kann sie jetzt leider nicht finden, aber ich glaube ich habe das so gemacht:

Code: [AUSKLAPPEN]
For win.Window = Each Window
mx = MouseX()
my = MouseY()
mxs=MouseXSpeed()
mys=MouseYSpeed()
If RectsOverlap(win\X,win\Y,win\W,24,mx,my,1,1) Then
  While MouseDown(1)
    win\X=win\X+mxs
    win\Y=win\Y+mys
  Wend
EndIf
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Valnar

Betreff: Re: Eigene Gui

BeitragFr, Nov 07, 2008 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Thunder hat Folgendes geschrieben:
Code: [AUSKLAPPEN]
For win.Window = Each Window
mx = MouseX()
my = MouseY()
mxs=MouseXSpeed()
mys=MouseYSpeed()
If RectsOverlap(win\X,win\Y,win\W,24,mx,my,1,1) Then
   If MouseDown(1) Then
      win\X=win\X+mxs
      win\Y=win\Y+mys
   EndIf
EndIf


Ich hab mir auch eine GUI geschrieben, kann sie jetzt leider nicht finden, aber ich glaube ich habe das so gemacht:

Code: [AUSKLAPPEN]
For win.Window = Each Window
mx = MouseX()
my = MouseY()
mxs=MouseXSpeed()
mys=MouseYSpeed()
If RectsOverlap(win\X,win\Y,win\W,24,mx,my,1,1) Then
  While MouseDown(1)
    win\X=win\X+mxs
    win\Y=win\Y+mys
  Wend
EndIf

Mit while geht das nicht, da er ja dann in der Whileschleife hängt solange mousedown ist. Dann wird nichts anderes gemacht.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group