Mausbedienung

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Gandalf13

Betreff: Mausbedienung

BeitragSo, Dez 28, 2003 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann mir jemand bei der Programmierung einer Mausbedienung in BB2D
helfen?! Laughing
Bitte Quelltext 8)
 

morszeck

Gast

BeitragSo, Dez 28, 2003 18:27
Antworten mit Zitat
Wie Mausbedienung?
Eine Maus ist in BB nicht integriert. Das heißt du brauchst selber eine!

Code: [AUSKLAPPEN]
maus = LoadImage("maus.bmp")
DrawImage maus, MouseX(), MouseY()

D2006

Administrator

BeitragSo, Dez 28, 2003 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
jetzt gehts wohl los:
Code: [AUSKLAPPEN]

Showpointer


Code: [AUSKLAPPEN]

Hidepointer


nur so nebenbei.

PS: wird er wohl nicht mit Absicht gemacht haben

ViciouS

BeitragSo, Dez 28, 2003 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
dann benutz doch mal showpointer im vollbildmodus...
Skaten ist scheisse...
Bilanz: 3 Knochenbrüche in 4 Jahren...
und es werden mehr Laughing
 

junky

BeitragSo, Dez 28, 2003 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
hm - @ gandalf ... was willsten genau machen ?!
einfach nen mousepointer ( wie oben schon gezeigt ? ) - oder ne einfache mausbewegung ( mousex(), mousey() ) ... vielleicht auch das ganze noch auf nem scrollbaren bildschirm ( origin x,y )

en bisl mehr info wär schon nit schlecht :p
gestern stand ich noch vorm Abgrund
heute bin ich einen Schritt weiter...
 

newkev

BeitragMo, Dez 29, 2003 12:37
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab jetzt mal auch eine frage zur mausbedienung und da ich keinen neuen thread erstellen will poste ich es einfach mal hier rein

Code: [AUSKLAPPEN]

Graphics 1024,768,16,1
SetBuffer BackBuffer()

maus = LoadImage ("maus.bmp")

Repeat
mx = MouseX()
my = MouseY()

DrawImage maus,mx,my

Flip
Cls

Until KeyDown(1)


also das problem ist dass die maus nicht aus dem bildschirm heraus kommt das heißt das mx nicht größer als 1023 werden kann...und wenn man dann mit origin scrollen will ist das schlecht. wie kann man das problem umgehen?

Xenon

BeitragMo, Dez 29, 2003 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Du fragst ob es bei 1023 oder ein wenig darunter is also zB.

if MouseX() > 1000

und dann scrollst du!
origin nimmt aber soviel ich weis auf die Mauskoordinaten keinen Einfluß!

oder wenn du es anders willst arbeitest du mit MouseX/YSpeed(), wo du aber mit MoveMouse die Maus immer an den Mittelpunkt setzen musst!

Xenon
 

junky

BeitragMo, Dez 29, 2003 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
origin nimmt schon einfluss auf die mousebefehle - aber im umgekehrten sinne:
nämlich dass eben kein einfluss darauf genommen wird ( klingt jetz en bisl doof , ich weiß ) - die maus wird eben nur in diesen z.b. 800,600 großen Quadrat angezeigt und behandelt... nicht aber in dem gescrollten bereich

hab ma en bsp gebastelt, in dem es hoffentlich klar wird ( falls noch fragen sind, fragt Very Happy )

Code: [AUSKLAPPEN]


Graphics 800,600,32,1
SeedRnd MilliSecs()

; ======== Tilemapeinstellungen ========>>
Dim tile(1)
Dim tilemap(40,30)

Const maxtilex=16
Const maxtiley=12
Const tilesize=50

For x=0 To maxtilex
   For y=0 To maxtiley
      tilemap(x,y)=xynr
      xynr=xynr Xor 1
   Next
Next

; <<========

; ======== Image erstellen ========>>

; Tile Typ 1
tile(0)=CreateImage(tilesize,tilesize)
SetBuffer ImageBuffer(tile(0))
Color 0,0,150
Rect 0,0,tilesize,tilesize,1

; Tile Typ 2
tile(1)=CreateImage(tilesize,tilesize)
SetBuffer ImageBuffer(tile(1))
Color 0,0,100
Rect 0,0,tilesize,tilesize,1

; Mauszeiger
mousepointer=CreateImage(4,4)
MidHandle mousepointer
SetBuffer ImageBuffer(mousepointer)
Color 200,0,0
Rect 0,0,4,4,1

; <<========

; ================ HAUPTSCHLEIFE ================
   Color 255,255,255 : SetBuffer BackBuffer()
   MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
   Repeat
   ; ==== Scrolling ====
   
   mx=MouseX()
   my=MouseY()
   
   If mx=0 Then OriginX=OriginX-1
   If mx=GraphicsWidth()-1 Then Originx=Originx+1
   If my=0 Then Originy=Originy-1
   If my=GraphicsHeight()-1 Then Originy=Originy+1
   
   mx=mx+Originx
   my=my+Originy
   
   ; ====== Drawing ======
   Cls
   
   Origin -Originx,-Originy
   
   For x=0 To maxtilex-1
      For y=0 To maxtiley-1
         DrawBlock tile(tilemap(x,y)),x*tilesize,y*tilesize
      Next
   Next
   
   DrawBlock mousepointer,mx,my
   
   Text 00+Originx,00+Originy,"MouseX: "+mx
   Text 00+Originx,14+Originy,"MouseY: "+my
   
   Flip 1
; ====== ======
Until KeyDown(1)
End

gestern stand ich noch vorm Abgrund
heute bin ich einen Schritt weiter...
 

newkev

BeitragMo, Dez 29, 2003 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Wink mein Problem ist gelöst Very Happy Very Happy Very Happy
 

Gandalf13

BeitragMo, Dez 29, 2003 23:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry junky eine ganz einfache Mausbedienung 8) zum beispiel in einem Programm usw Very Happy
bitte hilfe!!!!! Crying or Very sad
ich brauche diese bedienung für ein um ein spiemenü zu bedienen 8)
 

Gandalf13

BeitragMo, Dez 29, 2003 23:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry junky eine ganz einfache Mausbedienung zum beispiel in einem Programm usw
bitte hilfe!!!!!
ich brauche diese bedienung für ein spiemenü 8)

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Dez 30, 2003 1:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
meintest du etwa so QuestionCode: [AUSKLAPPEN]
Const ESC = 1
Global Mausklick , Maus_Pos_X, Maus_Pos_Y
AppTitle "Beispiel - MausAbfrage - Buttonklick"
Graphics 800,600,16,2
SetBuffer BackBuffer()
;Mauszeiger = LoadImage ("Gfx\Mauszeiger.bmp"); evt Laden
Button_X  = 100     ;hier wird
Button_Y =  200    ;die
Breite      =  200     ;Buttongröße
Hoehe        = 80      ;eingestellt
Repeat                     ; Hauptschleife Anfang
   Maus_abfrage() ;wie der Name schon sagt
   Rect Button_X,Button_Y,Breite ,Hoehe,1 ;Button malen
   If Mausklick  = 1 Then
      If RectsOverlap (Maus_Pos_X,Maus_Pos_Y,1,1,Button_X,Button_Y,Breite ,Hoehe)
            ; hier rein was passieren soll
            Color Rand (100,200),Rand (100,200),Rand (100,200)
               ;z.B.:  hier mal zufällig die Malfarbe ändern
      End If
   End If
   ;DrawImage Mauszeiger, Maus_Pos_X, Maus_Pos_Y ; Maus einzeichnen
   Flip ;Bild sichtbar machen
   Cls  ;Bildschirm löschen um neu zu zeichnen , kann hier eigendlich entfallen
Until KeyHit(ESC) ; Hauptschleife Ende
end
Function Maus_abfrage()
   Mausklick  = MouseHit(1)
   Maus_Pos_X = MouseX()
   Maus_Pos_Y = MouseY()
End Function

Funktionsfähiger Programmcode einfach in bb einfügen dann ist es übersichtlicher

Ist schon ein kleines Tutorial geworden 8)
[BB2D | BB3D | BB+]

Flori-D

BeitragDi, Dez 30, 2003 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Du willst sowas wie ein Haptmenü damit bedienen?
So das du auf die Menüpunkte klicken kannst ,oder?
Hier vieleicht Hilftdas ja
Code: [AUSKLAPPEN]

If MouseHit(1) Then
If Menüpunkt = 1 Then....
If Menüpunkt = 2 Then...
If Menüpunkt = 3 Then....
....
Endif
BB is Macht!

Homepage: www.flori-d.de
 

Gandalf13

BeitragDi, Dez 30, 2003 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
danke junky genau das hab ich gemeint Very Happy
jetzt brauch ich nur noch die verzweigungen zwischen den verschiedenen menüs!
Laughing
bitte Surprised
freue mich auf quelltexte!! Wink
 

Gandalf13

BeitragDi, Dez 30, 2003 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
ja genau sowas in der art um menüs zu bedienen Laughing
bitte quelltext Laughing

Flori-D

BeitragDi, Dez 30, 2003 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Äh dazu brauch ich mal den Code von dir sonst kann ich nr schlecht helfen.
BB is Macht!

Homepage: www.flori-d.de

Flori-D

BeitragDi, Dez 30, 2003 20:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Du müsstes doch eigentlich für dein Menü Functionen haben.
Also kannst du das ungefähr so machen:
Code: [AUSKLAPPEN]

;Hier dein Menü(Menüsteine etc.)
  ;Dann Maus einbinden;
If MouseHit(1)
If Menü = 1 Then Start()
....
;Dann die Functionen festlegen;
Function Start()
;HIer kommt dein Spiel oder was weis ich hin
Function End
BB is Macht!

Homepage: www.flori-d.de

d-bug

BeitragDo, Jan 01, 2004 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Gutes Stichwort Very Happy

Hab da auch ein Problem...

Wie würdet ihr einen Doppelklick realisieren ?

greetz

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, Jan 01, 2004 22:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi d:bug
Doppelklick kannste mit in die Function schreiben Code: [AUSKLAPPEN]
Function Maus_abfrage()
   Mausklick  = MouseHit(1)
   If Mausklick  = 1 Then
    MausklickZeit = MilliSecs ()
      If MausklickZeit  - MausklickZeitAlt  < 200 Then
        Doppelklick = 1
      End If
    MausklickZeitAlt = MausklickZeit
   End If
   Maus_Pos_X = MouseX()
   Maus_Pos_Y = MouseY()   
End Function


so könnte es gehen...
[BB2D | BB3D | BB+]

d-bug

BeitragDo, Jan 01, 2004 23:55
Antworten mit Zitat
Benutzer-Profile anzeigen
@Rallimen

Danke, aber funktioniert leider nicht, wenn du das ganze mit MouseDown(1) machst.

Poste mal meinen Code :

Code: [AUSKLAPPEN]
; Maus-Button Konstanten
Const MouseLeft = 1
Const MouseRight = 2
Const MouseMiddle = 3

; Maus-Event Konstanten

Type dxmouse
 Field x%,y%,z%
 Field xspeed%,yspeed%,zspeed%
 Field lclick%,ldown%,ldouble%,lhold%,ldowntimer%
 Field pointer_normal%
End Type

Global dxmouse.dxmouse = New dxmouse
Global dxmousedowntimeing% = 500

Graphics (640,480,32,0)
SetBuffer BackBuffer()

While Not KeyHit (1)
 Cls
 DXUpdateMouse(1)

 Text 20,20,"Mausbutton gehalten : "+dxmouse\ldown%
 Text 20,40,"Mausklick           : "+dxmouse\lclick%

 Flip
Wend
End




Function DXUpdateMouse (mode%=0)

; 0 = kein mauszeiger
; 1 = normaler mauszeiger

 ;Mausposition ermitteln
 dxmouse\x% = MouseX()
 dxmouse\y% = MouseY()
 dxmouse\z% = MouseZ()

 ; Mausgeschwindigkeit ermitteln
 dxmouse\xspeed% = MouseXSpeed()
 dxmouse\yspeed% = MouseYSpeed()
 dxmouse\zspeed% = MouseZSpeed()

 ; linke Maustaste abfragen
 dxmouse\lclick%=False
 If MouseDown (MouseLeft)

  If dxmouse\ldown% = False
   dxmouse\lclick% = True
  EndIf

  dxmouse\lhold% = True
  If dxmouse\lhold% = True And dxmouse\ldowntimer% = False
   dxmouse\ldowntimer% = MilliSecs()
  EndIf
  If MilliSecs() > dxmouse\ldowntimer%+dxmousedowntimeing%
   dxmouse\ldown% = True
  EndIf
 Else
  dxmouse\lhold% = False
  dxmouse\ldowntimer% = False
  dxmouse\ldown% = False
 EndIf

 ; Mauszeiger anzeigen
 If Mode And 1
  If Not dxmouse\pointer_normal%
   Restore dxmouse_pointer_normal
   dxmouse\pointer_normal% = DXRestoreImage ()
   MaskImage dxmouse\pointer_normal%,255,0,255
  EndIf
  DrawImage dxmouse\pointer_normal%,dxmouse\x%,dxmouse\y%
 EndIf
 
End Function

Function DXRestoreImage% ()
 Read w%
 Read h%
 im=CreateImage(w%,h%)
 SetBuffer ImageBuffer(im)
 LockBuffer ImageBuffer(im)
 For x=0 To w%-1
  For y=0 To h%-1
   Read rgb%
   WritePixelFast x,y,rgb%
  Next
 Next
 UnlockBuffer ImageBuffer(im)
 SetBuffer BackBuffer()
 Return im
End Function

.dxmouse_pointer_normal
Data 11
Data 19
Data $000000, $808080, $808080, $808080, $808080, $808080, $808080, $808080
Data $808080, $808080, $808080, $808080, $808080, $808080, $000000, $FF00FF
Data $FF00FF, $FF00FF, $FF00FF, $FF00FF, $000000, $C0C0C0, $C0C0C0, $FFFFFF
Data $FFFFFF, $FFFFFF, $FFFFFF, $FFFFFF, $FFFFFF, $FFFFFF, $FFFFFF, $C0C0C0
Data $000000, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF
Data $000000, $C0C0C0, $C0C0C0, $C0C0C0, $FFFFFF, $FFFFFF, $FFFFFF, $FFFFFF
Data $FFFFFF, $C0C0C0, $000000, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF
Data $FF00FF, $FF00FF, $FF00FF, $FF00FF, $000000, $C0C0C0, $C0C0C0, $C0C0C0
Data $C0C0C0, $FFFFFF, $FFFFFF, $C0C0C0, $000000, $FF00FF, $FF00FF, $FF00FF
Data $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF
Data $000000, $C0C0C0, $C0C0C0, $C0C0C0, $C0C0C0, $C0C0C0, $000000, $FFFFFF
Data $808080, $808080, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF
Data $FF00FF, $FF00FF, $FF00FF, $FF00FF, $000000, $C0C0C0, $C0C0C0, $C0C0C0
Data $C0C0C0, $000000, $C0C0C0, $FFFFFF, $FFFFFF, $808080, $808080, $FF00FF
Data $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF
Data $000000, $C0C0C0, $C0C0C0, $C0C0C0, $000000, $000000, $C0C0C0, $C0C0C0
Data $FFFFFF, $FFFFFF, $808080, $808080, $FF00FF, $FF00FF, $FF00FF, $FF00FF
Data $FF00FF, $FF00FF, $FF00FF, $FF00FF, $000000, $C0C0C0, $C0C0C0, $000000
Data $FF00FF, $000000, $000000, $C0C0C0, $C0C0C0, $FFFFFF, $C0C0C0, $000000
Data $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF
Data $000000, $C0C0C0, $000000, $FF00FF, $FF00FF, $FF00FF, $000000, $000000
Data $C0C0C0, $C0C0C0, $000000, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF
Data $FF00FF, $FF00FF, $FF00FF, $FF00FF, $000000, $000000, $FF00FF, $FF00FF
Data $FF00FF, $FF00FF, $FF00FF, $000000, $000000, $FF00FF, $FF00FF, $FF00FF
Data $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF
Data $000000, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF, $FF00FF
Data $FF00FF


Ja ich weiß, ist vieeeeel zu lang... Keiner hat Lust den ganzen schrott durchzuforsten... Wink

Ne, mal im ernst, ich bin einfach zu dumm um da einen Doppelklick rein zu proggen...

greetz

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group