mausgesteuertes Menü
Übersicht BlitzBasic Beginners-Corner
jokerman29Betreff: mausgesteuertes Menü |
Sa, Jan 23, 2010 15:00 Antworten mit Zitat |
|
---|---|---|
Hi leutz,
ich versuch grad ein mausgesteuertes Menü in B3D zu machen (für ein spiel) leider funktz nicht und ich finde den fehler nicht, hoffentlich findet ihr ihn: Code: [AUSKLAPPEN] AppTitle "Menü" Graphics 640,480,32,2 SetBuffer BackBuffer() HidePointer ;globale Global MX = MouseX() Global MY = MouseY() spielen = LoadImage("C:\Users\David\Desktop\Blitzbasic\Menü\spielen.bmp") ScaleImage spielen, 0.5,0.5 pfeil = LoadImage("C:\Users\David\Desktop\Blitzbasic\Menü\pfeil.bmp") ScaleImage pfeil, 0.15,0.15 RotateImage pfeil, 45 spielenw = ImageWidth(spielen) spielenh = ImageHeight(spielen) While Not Keyhit(1) Cls DrawImage spielen, 215,50 If RectsOverlap(MX,MY,1,1,215,50,spielenw,spielenh) And MouseDown(1) Then Text 0,0, "kollision" DrawImage pfeil, MX,MY Flip Wend End Normalerweise würde wenns fertig ist nicht Kollision stehen, sondern das Menü würde weitergehen und das hier ist auch nur ein teil des Menüs. seht ihr den Fehler?? mfg jokerman29 |
||
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!
Rechtschreibfehler sind special-effekts meiner Tastatur |
M0rgenstern |
Sa, Jan 23, 2010 15:07 Antworten mit Zitat |
|
---|---|---|
Also, es wäre schön, wenn du genau beschreiben würdest, was denn "Nicht funktioniert", denn im Forum gibts Afaik keine Hellseher.
Aber an deinem Code glaube ich schon zu sehen, was nicht funtzt. Lass mich raten: Die Maus bewegt sich nicht? Du musst die Zeilen: Code: [AUSKLAPPEN] Global MX = MouseX()
Global MY = MouseY() Ohne das Global davor nochmal an den Anfang deiner Hauptschleife schreiben (hinter CLS). Dann müsste es funktionieren. Der Fehler liegt nämlich momentan darin, dass du die Mauskoordinaten nur einmal in die Variablen übergiebst und danach nicht mehr. Das heißt, wenn die Maus bewegt wird dann bekommt das Programm das nicht mit, weil es kein "update" der Mauskoordinaten bekommt. Noch was nebenbei: Du solltest keine absoluten Pfade für Bilder etc nutzen sondern nur relative. Lg, M0rgenstern |
||
jokerman29 |
Sa, Jan 23, 2010 15:11 Antworten mit Zitat |
|
---|---|---|
oh, entschuldigung, da ahb ich das wichtigste vergessen:
der fehler ist garnicht das mit der Maus, die bewegt sich super, nur wenn ich mit der linken maustaste auf das bild "spielen" drücke, sollte eig. oben links "Kollision" stehen, doch das tut es nicht weis wer warum? mfg jokerman |
||
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!
Rechtschreibfehler sind special-effekts meiner Tastatur |
M0rgenstern |
Sa, Jan 23, 2010 15:18 Antworten mit Zitat |
|
---|---|---|
Tu mir mal Bitte den Gefallen und setz ein Code: [AUSKLAPPEN] MX = mousex()
hinter den CLS.
MY = Mousey() Du bist nämlich im fenstermodus und da könnte es (trotz HidePointer) die Windowsmaus sein die du siehst. Ansonsten versuch mal vor die If Abfrage an Color 250, 250, 250 zu setzen, vielleicht liegts auch daran. Ansonsten vielleicht mal XWidth und XHeight für die maus bei Rectsoverlap ein wenig vergrößern. Lg, M0rgenstern |
||
BadDeath |
Sa, Jan 23, 2010 15:19 Antworten mit Zitat |
|
---|---|---|
Trotzdem musst du ja die aktuellen Werte für die Mauskoordinaten abfrgen, wie du das am Anfang der Schleife schon machst:
Code: [AUSKLAPPEN] Global MX = MouseX()
Global MY = MouseY() Das musst du nun, wie Morgenstern schon meinte, auch in die Schleife setzen. Sonst überprüfst du ja jedes Mal die Stelle, an der die Maus beim Programmstart war. Edit: Zu spät..... |
||
-~= real coders just code in binary =~- |
jokerman29 |
Sa, Jan 23, 2010 15:21 Antworten mit Zitat |
|
---|---|---|
also ich hab MX und MY hinter das CLS gesetzt und es funkzt =)
vielen Dank euch mfg jokerman29 |
||
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!
Rechtschreibfehler sind special-effekts meiner Tastatur |
M0rgenstern |
Sa, Jan 23, 2010 15:26 Antworten mit Zitat |
|
---|---|---|
Sorry, aber das kann ich mir jetzt nicht verkneifen:
Glaub doch einfach mal was, wenn man es dir sagt. Das hat man an deinem Code gesehen. MX und MY haben nie mehr neue Koordinaten erhalten. Da lag das Problem. Lg, M0rgenstern |
||
das wurgel |
Sa, Jan 23, 2010 15:26 Antworten mit Zitat |
|
---|---|---|
Hast du Mal ausprobiert was M0rgenstern dir gesagt hat? Warscheinlich ist die Maus die du siehst nur die Windowseigene Maus und nicht die, die du programmiert hast. Schreib Mal HidePointer() vor die Hauptschleife und guck, ob die Maus immernoch funktioniert. So wie du es geschrieben hast nimmt RectsOverlap immer nur die Mauskoordinaten, die du am Anfang des Programms ausgelesen hast und nicht die aktuellen. Ansonsten müsste alles funktionieren.
MfG Edit: Ach verdammt, wie schnell schreibt ihr denn alle!? |
||
1 ist ungefähr 3 |
jokerman29 |
Sa, Jan 23, 2010 15:46 Antworten mit Zitat |
|
---|---|---|
@ morgenstern:
ich hab doch das getan was du gesagt hast und deswegen funkzt es ja auch. @ das wurgel: siehe oben |
||
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!
Rechtschreibfehler sind special-effekts meiner Tastatur |
Chrissa |
Sa, Jan 23, 2010 22:54 Antworten mit Zitat |
|
---|---|---|
Hier noch n kleinen Tipp von mir:
du musst MoueX und MouseY nicht in Variablen speichern. Das macht es nur kompliziert. Bei den Kollisionsabfragen oder bei Updaten der maus kannst du stattdessen auch immer MouseX() und MouseY() schreiben. Dann hast du weniger Gewurstel mit den Variablen Lg |
||
jokerman29 |
Sa, Jan 23, 2010 23:25 Antworten mit Zitat |
|
---|---|---|
achso oki, ich merks mir
mfg jokerman29 |
||
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!
Rechtschreibfehler sind special-effekts meiner Tastatur |
hazumu-kun |
Sa, Jan 23, 2010 23:56 Antworten mit Zitat |
|
---|---|---|
@Chrissa:
Das sollte man aus Performance gründen aber trotzdem machen, einmal MouseX/-Y aufrufen und dann nurnoch auf Variablen zugreifen ist deutlich schneller als jedemal neu abzufragen. |
||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group