Auf Mausklick Bild bewegen?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

bruce85

Betreff: Auf Mausklick Bild bewegen?

BeitragDo, Apr 06, 2006 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,
ich bin grad dabei ein Spiel zu schreiben, und wenn ich auf das Bild klicke möchte ich es verschieben können, habe das zwar richtig gemacht, aber wenn ich auf das Bild klicke, dann hängt das bild immer am Spietze der maus, ich verschiebt sich weiter runter wenn ich drauf klicke, wie kann ich es verhindern?
hier mal mein Code:

Code: [AUSKLAPPEN]
DrawImage ball,x,y

  If ImagesCollide(maus,MouseX(),MouseY(),0,ball,x,y,0) Then
    If MouseDown(1) Then
      x = MouseX()
      y = MouseY()
    EndIf
  EndIf


ich danke euch schonmal Wink

Gruss Andreas

5k41

BeitragDo, Apr 06, 2006 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
hinter das Imagescollide muss noch ein AND mousedown(1) sonst wird es ja immer mit gezogen wenn es kollidiert und das ist immer der fall, da es immer mitgezogen wird, verstehst du? Wink

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

bruce85

BeitragDo, Apr 06, 2006 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ich danke dir, aber das geht auch so, wenn ich die linke maustaste gedrückt halte, dann kann ich es verschieben, wenn ich los lase, dann kann ich es nich mehr verschicben.

aber wenn ich ganz unten auf das Bild klicke, dann hängt sich das bild weiter unten an, das möchte ich verhindern Very Happy

5k41

BeitragDo, Apr 06, 2006 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
oh hast du ja auch drin Very Happy sry hab ich ganz übersehen^^ poste doch mal den gesamten code... so kann ich dir nicht wirklich weiter helfen...
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

bruce85

BeitragDo, Apr 06, 2006 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
danke dir Wink

Code: [AUSKLAPPEN]
Function level_start()
  Repeat
  ClsColor 128,255,0 
  Cls

  ;level anzeigen
  DrawImage levels,level_y,level_y,level_frames

  DrawImage ball,x,y

  If ImagesCollide(maus,MouseX(),MouseY(),0,ball,x,y,0) Then
    If MouseDown(1) Then
      x = MouseX()
      y = MouseY()
    EndIf
  EndIf

  DrawImage maus,MouseX(),MouseY()

  Flip
Until KeyHit(1)
End Function


Das Menu habe ich weg gelasen
bin noch net weit mit mein Spiel, nur wenn ich auf dem Ball klicke, hängt sich der Ball in der Mitte des Mauszeigers, wiess nicht warum Crying or Very sad

JustTheBest

Betreff: ...

BeitragDo, Apr 06, 2006 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Bin mir zwar nicht sicher was du mit "hängt sich an die Mitte des Mauszeigers..." meinst, aber ich vermute, du willst, dass der Ball genau rundherum um den Zeiger gemalt wird und nicht die obere linke Ecke des Bildes am Mauszeiger ist!
Lösung:
Da es sowieso eine runde figur(ball, oder nicht?) ist, solltest du nach dem Laden des Bildes den Befehl zum verändern des Bezugspunktes setzen:
Code: [AUSKLAPPEN]

midhandle ball

Probiers mal!
Sry, wenn ich dich missverstanden habe!
mfg
JTB

5k41

BeitragDo, Apr 06, 2006 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
mh also ich seh im moment keinen fehler... kannst du mir deinen Fehler nochmal genauer beschreiben?
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, Apr 06, 2006 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Function Hauptschleife()
   ClsColor 128,255,0 
   Repeat
 
      Cls
      DrawImage ball,x,y
      If MouseHit(1) Then
         If ImagesCollide(maus,MouseX(),MouseY(),0,ball,x,y,0) Then
            mx = MouseX()-x
            my = MouseY()-y
            BildAnMaus= 1
         EndIf
      End If
      If MouseDown(1) And BildAnMaus = 1Then
         x = MouseX() -mx
         y = MouseY() -my
      Else
      BildAnMaus= 0
      EndIf
        DrawImage maus,MouseX(),MouseY()
   
        Flip
   Until KeyHit(1)
   
End Function
[BB2D | BB3D | BB+]

5k41

BeitragDo, Apr 06, 2006 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
dachte er wollte nur das es sich bewegt wenn man gedrückt hält...
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

bruce85

BeitragDo, Apr 06, 2006 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
cool, ich danke dir, genau das habe ich gemeint Very Happy

StepTiger

BeitragDo, Apr 06, 2006 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Was hällst du hiervon:
Code: [AUSKLAPPEN]

Function level_start()
  Repeat
  ClsColor 128,255,0 
  Cls

  ;level anzeigen
  DrawImage levels,level_y,level_y,level_frames

  DrawImage ball,x,y

  If ImagesCollide(maus,MouseX(),MouseY(),0,ball,x,y,0) Then
    If MouseDown(1)
      x = MouseX()+mx
      y = MouseY()+my
      if klicked=0 then mx=x-MouseX():my=y-MouseY():klicked=1
    Else
      klicked=0
    EndIf
  EndIf

  DrawImage maus,MouseX(),MouseY()

  Flip
Until KeyHit(1)
End Function


Besser so?

*edit*huch! Hab deinen Post übersehen Rallimen lol*/edit*
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

JustTheBest

Betreff: Achso...

BeitragDo, Apr 06, 2006 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Könntest du mir bitte nochmal sagen, welche lösung du jezt gemeint/gesucht hast, wäre ich dir dankbar, da ich dann auch dein Problem nachvollziehen kann!
danke!
mfg
JTB

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, Apr 06, 2006 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal schnell gebastelter Code um das Problem zu zeigen!
Bei schneller Mausbewegung löst sich das bild vom Muaszeiger!
Beim Klicken auf das Bild wird es einfach zur Maus verschoben!
Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer ()
  ClsColor 128,255,0
  Ball = Image(100,100,$ff0000)
  Maus = Image(5,5,$ffff00)
 Repeat
Cls
  DrawImage ball,x,y
  If ImagesCollide(maus,MouseX(),MouseY(),0,ball,x,y,0) Then
    If MouseDown(1) Then
      x = MouseX()
      y = MouseY()
    EndIf
  EndIf
  DrawImage maus,MouseX(),MouseY()
  Flip
Until KeyHit(1)
Image(10,10,$ff0000)
Function Image(x,y,f); Erstellt Pseudo grafiken
    img = CreateImage (x,y)
    SetBuffer ImageBuffer (img)
    Color 0,0,f
    Rect 0,0,x,y,1
    SetBuffer BackBuffer ()
    Color 255,255,255
    Return img
End Function

Bei diesem Code ist es richtig!

Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer ()
  ClsColor 128,255,0
  Ball = Image(100,100,$ff0000)
  Maus = Image(5,5,$ffff00)
 Repeat
 
      Cls
      DrawImage ball,x,y
      If MouseHit(1) Then
         If ImagesCollide(maus,MouseX(),MouseY(),0,ball,x,y,0) Then
            mx = MouseX()-x
            my = MouseY()-y
            BildAnMaus= 1
         EndIf
      End If
      If MouseDown(1) And BildAnMaus = 1Then
         x = MouseX() -mx
         y = MouseY() -my
      Else
      BildAnMaus= 0
      EndIf
        DrawImage maus,MouseX(),MouseY()
   
        Flip
   Until KeyHit(1)
Image(10,10,$ff0000)
Function Image(x,y,f); Erstellt Pseudo grafiken
    img = CreateImage (x,y)
    SetBuffer ImageBuffer (img)
    Color 0,0,f
    Rect 0,0,x,y,1
    SetBuffer BackBuffer ()
    Color 255,255,255
    Return img
End Function
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group