BB: Collisionen werden nicht erkannt (Erledigt)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Michi1988

Betreff: BB: Collisionen werden nicht erkannt (Erledigt)

BeitragDo, Apr 01, 2004 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Tach. Hab ma versucht ne Btn Routine zu code.
Da ich sonst alles mit images mache fände ich es recht Hilfreich es
so zu machen. Hab auch auch noch nie besonders damit beschäftigt:
Hier der Code:

Code: [AUSKLAPPEN]

HidePointer()

Type Buttont
   Field x,y,width,height
   Field img
End Type

Global btn_weiter=new_btn("weiter",10,10)
Global btn_beenden=new_btn("beenden",10,40)

Global Maus=CreateImage(10,10,1)
SetBuffer ImageBuffer(Maus,0)
Color 255,0,0
Line 0,0,10,5
Line 0,0,5,10

Color 255,255,255
SetBuffer BackBuffer()
   While Not KeyHit(1)
      
      For speicher.Buttont=Each Buttont
         DrawImage speicher\img,speicher\x,speicher\y
         If ImagesCollide(Maus,MouseX(),MouseY(),0,speicher\img,speicher\x,speicher\y,0) Then x=1:Else:x=0
      Next
      
      Text 100,10,x      
      
      DrawImage Maus,MouseX(),MouseY()
      Flip
   Cls
Wend

Function new_btn(txt$,x,y)
   speicher.Buttont=New buttont
   speicher\x=x
   speicher\y=y
   speicher\img=CreateImage(StringWidth(txt$)+4,StringHeight(txt$)+2,1)
   SetBuffer ImageBuffer(speicher\img,0)
   Color 125,125,125
   Rect 0,0,StringWidth(txt$+4),StringHeight(txt$)+2
   Color 255,255,255
   Text 2,1,txt$
End Function



Das Problem ist nun das immer nur der zuletzt erstellte abgefracht werden kann.[/code]
  • Zuletzt bearbeitet von Michi1988 am Do, Apr 01, 2004 17:22, insgesamt einmal bearbeitet
 

BIG BUG

BeitragDo, Apr 01, 2004 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Es wird schon jeder Button abgefragt. Du siehst es aber nicht, weil du der Variable x immer den Wert des letzten Buttons zuweist.
Mach eher sowas:
Code: [AUSKLAPPEN]

x=0
for ... each ..
   if ...
     x=x+1
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

Michi1988

BeitragDo, Apr 01, 2004 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohhh Mensch ja.
So nen Kleinkind fehler.
Danke

Aber jetzt brauche ich noch ne vernümpftige abfrage.
Villeicht bekomme ihc die ja h9in. MOM

EDIT:
Code: [AUSKLAPPEN]

HidePointer()

Type Buttont
   Field x,y,width,height
   Field img,pressed,txt$
End Type

Global x
Global btn_weiter=new_btn("weiter",10,10)
Global btn_beenden=new_btn("beenden",10,40)

Global Maus=CreateImage(10,10,1)
SetBuffer ImageBuffer(Maus,0)
Color 255,0,0
Line 0,0,10,5
Line 0,0,5,10

Color 255,255,255
SetBuffer BackBuffer()
   While Not KeyHit(1)
      
      For speicher.Buttont=Each Buttont
         DrawImage speicher\img,speicher\x,speicher\y
      Next
      
      If MouseHit(1) Then abfrage(MouseX(),MouseY())

      
      
         Text 100,10,x
      
      DrawImage Maus,MouseX(),MouseY()
      Flip
   Cls
Wend

Function new_btn(txt$,x,y)
   speicher.Buttont=New buttont
   speicher\x=x
   speicher\y=y
   speicher\pressed=0
   speicher\txt$=txt$
   speicher\img=CreateImage(StringWidth(txt$)+4,StringHeight(txt$)+2,1)
   SetBuffer ImageBuffer(speicher\img,0)
   Color 125,125,125
   Rect 0,0,StringWidth(txt$+4),StringHeight(txt$)+2
   Color 255,255,255
   Text 2,1,txt$
End Function

Function abfrage(mx,my)
For speicher.buttont=Each buttont
   If ImagesCollide(Maus,MX,MY,0,speicher\img,speicher\x,speicher\y,0) Then
      If speicher\txt$="weiter" Then x=x+1
      If speicher\txt$="beenden" Then End
   End If
Next
End Function


Aber warum muss ich x globalisieren und kann es nich einfach wie mousex() und mousey() in die funktion mit einbringen?

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group