Mausbedienung
Übersicht

Gandalf13Betreff: Mausbedienung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann mir jemand bei der Programmierung einer Mausbedienung in BB2D
helfen?! ![]() Bitte Quelltext 8) |
||
morszeckGast |
![]() 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() |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
jetzt gehts wohl los:
Code: [AUSKLAPPEN] Showpointer Code: [AUSKLAPPEN] Hidepointer nur so nebenbei. PS: wird er wohl nicht mit Absicht gemacht haben |
||
![]() |
ViciouS |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann benutz doch mal showpointer im vollbildmodus... | ||
Skaten ist scheisse...
Bilanz: 3 Knochenbrüche in 4 Jahren... und es werden mehr ![]() |
junky |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke ![]() ![]() ![]() ![]() |
||
Gandalf13 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sorry junky eine ganz einfache Mausbedienung 8) zum beispiel in einem Programm usw ![]() bitte hilfe!!!!! ![]() ich brauche diese bedienung für ein um ein spiemenü zu bedienen 8) |
||
Gandalf13 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sorry junky eine ganz einfache Mausbedienung zum beispiel in einem Programm usw
bitte hilfe!!!!! ich brauche diese bedienung für ein spiemenü 8) |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
meintest du etwa so ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke junky genau das hab ich gemeint ![]() jetzt brauch ich nur noch die verzweigungen zwischen den verschiedenen menüs! ![]() bitte ![]() freue mich auf quelltexte!! ![]() |
||
Gandalf13 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja genau sowas in der art um menüs zu bedienen ![]() bitte quelltext ![]() |
||
![]() |
Flori-D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ä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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gutes Stichwort ![]() Hab da auch ein Problem... Wie würdet ihr einen Doppelklick realisieren ? greetz |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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... ![]() Ne, mal im ernst, ich bin einfach zu dumm um da einen Doppelklick rein zu proggen... greetz |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group