Seite 1 von 1

Maus im vollbild

Verfasst: 22.03.2005 01:57
von zigapeda
wenn ich eine Maus im vollbild anzeigen möchte mache ich das so:

Code: Alles auswählen

InitSprite()
InitKeyboard()
InitMouse()

OpenScreen(1024,768,32,"")

LoadSprite(0,"Data\Sprites\Mouse.bmp")

Repeat
FlipBuffers()
ExamineKeyboard()
ExamineMouse()
ClearScreen(255,255,255)
StartDrawing(ScreenOutput())
DisplaySprite(0,MouseX(),MouseY())
StopDrawing()
Until KeyboardPushed(#pb_key_escape)
was ist daran falsch?

Verfasst: 22.03.2005 02:29
von Hroudtwolf

Code: Alles auswählen

InitSprite()
InitKeyboard()
InitMouse()

OpenScreen(1024,768,32,"")

LoadSprite(0,"Data\Sprites\Mouse.bmp")
TransparentSpriteColor (0,255,0,255); Rosa als Transparente Farbe

Repeat
FlipBuffers()
ClearScreen(0,0,0)
ExamineKeyboard()
ExamineMouse()
DisplayTransparentSprite(0,MouseX(),MouseY())

Until KeyboardPushed(#pb_key_escape) 

Verfasst: 22.03.2005 02:31
von glubschi90
Genau: Start bzw. Stopdrawing() werden bei Sprite-Befehlen nicht benötigt!

Verfasst: 22.03.2005 02:35
von zigapeda
Ok bei mir funktionierts jetzt auch danke

Verfasst: 22.03.2005 03:07
von zigapeda
jetzt hab ich die maus und wie kann ich jetzt feststellen ob ein bestimmter bereich angeklickt wurde?

Code: Alles auswählen

If MouseButton(1) And MouseX() > 30 And MouseX() < 210 And MouseY() > 30 And MouseY() < 46
StartDrawing(ScreenOutput())
Box(230,30,774,250,RGB(65,155,65))
StopDrawing()
endIf
funktioniert nicht

Verfasst: 22.03.2005 03:12
von Hroudtwolf
Ein Spritecollison währe eine Sache.

Code: Alles auswählen

if SpriteCollision (Maus,MausX,MausY,Sprite,Spritex,Spritey)
gedrueckt=1
endif 
Wenn es aber wirklich ein Bereich sein soll. Musst du das aus den Koordinaten der Maus und des Bereichs berechnen.

Verfasst: 22.03.2005 03:21
von zigapeda
wenn das nicht andest geht, also mit dem bereich, schreib ich mir meine eigene funktion aber trotzdem danke

Verfasst: 22.03.2005 03:33
von zigapeda
Jetzt hab ich noch ein problem mit der funktion:

Code: Alles auswählen

Procedure Mausklick(x,y,width,height)
If MouseButton(1)
  If MouseX() >= x
    If MouseX() <= width + x
      If MouseY() >= y
        If MouseY() <= height + y
          ;Hier soll Mausklick = 1 sein
        Else
          ;Hier soll mausklick = 0 sein
        EndIf
      EndIf
    EndIf
  EndIf
Endif
endprocedure
Wenn ich schreibe:

Code: Alles auswählen

If Mausklick(30,30,30,30) = 1
;Programmteil
Endif[code]

Verfasst: 22.03.2005 04:18
von glubschi90

Code: Alles auswählen

Procedure Mausklick(x,y,width,height,Button)
  mx=MouseX()
  my=MouseY()
  If mx >= x And mx <= width + x And my >= y And my <= height + y
    If MouseButton(Button)
              
              ;...
              
    Else
              
              ;...
              
    EndIf
  EndIf
EndProcedure

Verfasst: 22.03.2005 08:01
von DarkDragon
Manoman, bei mir funktioniert das aber doch O_o

Code: Alles auswählen

InitSprite()
InitKeyboard()
InitMouse()

OpenScreen(1024,768,32,"")

CreateSprite(0,2, 2)
StartDrawing(SpriteOutput(0))
Box(0, 0, 2, 2, $FF0000)
StopDrawing()
TransparentSpriteColor (0,255,0,255); Rosa als Transparente Farbe

Repeat
FlipBuffers()
ClearScreen(0,0,0)
ExamineKeyboard()
ExamineMouse()
StartDrawing(ScreenOutput())
Box(30,30,210,46,RGB(196, 196, 196))
Locate(30, 30)
DrawingMode(1)
DrawText("Hier geklickt lassen")
StopDrawing()
DisplayTransparentSprite(0,MouseX(),MouseY())
If MouseButton(1) And MouseX() > 30 And MouseX() < 210 And MouseY() > 30 And MouseY() < 46
StartDrawing(ScreenOutput())
Box(230,30,774,250,RGB(65,155,65))
StopDrawing()
EndIf

Until KeyboardPushed(#pb_key_escape)
Fahr mit der Maus über den sichtbaren Kasten und lass die linke Maustaste gedrückt.

Achja: und schalt den debugger aus, der macht den Fehler!