Funktion Funktioniert nicht...
Übersicht

mrtpcagBetreff: Funktion Funktioniert nicht... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Warum funktioniert die Click-Abfrage mithilfe dieser funktion nur beim Firefox??:
BlitzBasic: [AUSKLAPPEN]
|
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weil MouseHit![]() mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
mrtpcagBetreff: @Holzchopf ...Und wo soll da der unterschied liegen...? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es ist doch egal, ob ich BlitzBasic: [AUSKLAPPEN] MouseHit(1)oder eine Variable abfrage... ...Außerdem funktioniert es doch bei der ersten if-Abrage... |
||
![]() |
ComNik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist schon egal.
Aber nicht bei MouseHit(). MouseHit() arbeitet mit einem Puffer, der bei jedem Aufruf der Funktion geleert wird. Wenn du also immer am Anfang die Funktion aufrufst und in eine Variable speicherst, kriegst du richtige Ergebnisse. Probiers aus, es klappt ![]() lg ComNik |
||
WIP: Vorx.Engine |
![]() |
faeX |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aber du müsstest genau zufällig die Maus klicken, wenn deine erste Abfrage schon gelaufen ist, die zweite aber noch nicht. Und dafür ist der PC viel zu schnell, das schafft man so gut wie gar nicht. Jedesmal wenn MouseHit![]() |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Meine Damen und Herren, werden sie Augenzeugen eines einmaligen Spektakels! Denn bis hier war es noch egal, wo sich dieser Thread befindet, aber durch des Erstellers Nachtrag kommt es zum ersten Mal in der Gesch- ach, was soll's ![]() ~VERSCHOBEN~ Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde. Der Unterschied liegt eben genau darin, dass MouseHit die Anzahl Maustastendrücke seit dem letzten Aufruf von MouseHit zurückgibt und den internen Zähler wieder nullt. Fragst du also zwei Mal kurz hintereinander diese Anzahl ab, ist es ziemlich wahrscheinlich, dass der Tastendruck nur beim ersten Aufruf registriert wird und folgedessen durch die Nullung beim zweiten Mal nicht mehr. mfG Edit Mist, da waren gleich zwei schneller =( |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
mrtpcagBetreff: Wie löse ich das Problem jetzt?? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
...das mit dem internen Counter von Mousehit wusste ich...
Wenn ich jetzt allerdings am Anfang der Schleife BlitzBasic: [AUSKLAPPEN] Mousegedrückt = MouseHit(1) hinzufüge, wie es mir empfohlen wurde, funktioniert das ganze trotzdem nicht, da meine Schleife sehr schnell läuft und "Mousegedrückt" immer wieder auf Null gesetzt wird... ![]() PS: Die Verschiebung der Frage in "Beginners corner" war meiner Meinung nach nicht berechtigt... |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wird aber dann nicht innerhalb der Schleife wieder genullt, sondern frühstens erst wieder beim nächsten Schleifendurchgang. Du hast auch garantiert die anderen Vorkommen von MouseHit![]() mfG |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Variablennamen dürfen keine Umlaute beinhalten ![]() |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
mrtpcagBetreff: Es geht immer noch nicht (mit Variable) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Leider tritt immernoch ein Problem auf...
...Ich habe alle Mousehit's ersetzt (es war nur einer) PS: die umlaute hab ich natürlich nicht benutzt. ...Dummes Beispiel mit dem Variablennamen... |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
mrtpcag, in allen Ehren, aber die Verschiebung ist berechtigt. Ist ja auch keine persönliche Diskriminierung dir gegenüber, sondern soll lediglich die Bereiche abgrenzen.
1.) Vermeide Umlaute in Variablennamen ''Mousegedrückt = MouseHit(1)'' 2.) Wenn du eine loakel Variable aus der Hauptschleife in einer Funktion benötigst, dann sollte diese zu einer globalen gemacht werden. 3.) Tipp: Lokale Variablen innerhalb einer Funktion gelangen so nicht nach Außen, womit sauber abgetrennt werden kann. - - - P.S. In den meisten Fällen kann man sich auf die Tipps anderer verlassen. Gerade bei so einfachen Dingen muß man nicht erst ewig ''rummosern'' bis man das vorgeschlagene in die Tat umsetzt. Vor allem wenn drei unterschiedliche Leute das gleiche schreiben. ![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
mrtpcag |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe das vorgeschlagene in die Tat umgesetzt, aber es funktioniert immer noch nicht...
...Wenn ich wüsste warum... __________________________________________________________________ Bei mir sieht es jetzt so aus: BlitzBasic: [AUSKLAPPEN] Graphics3D 800,600,0,2 |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Probier Code: [AUSKLAPPEN] Graphics3D 800,600,0,2
While Not KeyHit(1) If MouseHit(1) Then If CheckMouse(60,460,150,550) Then ExecFile(FirefoxExe$) EndIf If CheckMouse(260,460,350,550) Then ExecFile(MSInternetexplExe$) EndIf End If Rect 55,455,100,100,0 Rect 155,455,100,100,0 Rect 255,455,100,100,0 Flip Wend Function CheckMouse(XStart%,YStart%,XEnd%,YEnd%) If MouseX()>=XStart% And MouseX()<=XEnd% And MouseY()>=YStart% And MouseY()<=YEnd% Then Return True Else Return False EndIf End Function Edit1: Wenn du generell in die Funktion MouseButton eine 1 rein schickst, aber in der Funktion selbst auf If MouseButton% = 0 ... prüfst, dann kannst du dir selbst aussuchen, was für ein Ergebnis bei raus kommt. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
mrtpcag |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Problem an dem Probiercode: Ich will auch (an einer anderen Stelle im Prog) nur mit mouseover arbeiten...
-> da lass ich "if Mousehit(1).." dann einfach weg. -> Sehr guter Ansatz/Idee, aber man muss Glück haben, dass man zur richtigen Zeit drückt... -> Warum? Ich habe nirgendwo anders "Mousehit(1)" in Code... |
||
- Zuletzt bearbeitet von mrtpcag am Sa, Feb 13, 2010 19:42, insgesamt 2-mal bearbeitet
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie bereits von anderen gesagt, dann speicherst du den MouseHit eben in eine Variable zwischen. Diese kannst du dann innerhalb eines Loops auch mehrfach abfragen. Innerhalb von Funktionen kannst du dann den Wert als Paramater übergeben, oder eben auch die Variabel als gloabel deffinieren. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
mrtpcag |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
...Ich habe die Variable jetzt global deffiniert und Mousehit(1) durch sie ersetzt...
So geht's: ![]() Code: [AUSKLAPPEN] Graphics3D 800,600,0,2
;=======================================================================================Hauptprogramm Global Mousetouches While Not KeyHit(1) Mousetouches = MouseHit(1) Delay 200 ;------------------------------------------------------------------------------------------Umrandung Rect 55,455,100,100,0 Rect 155,455,100,100,0 Rect 255,455,100,100,0 ;----------------------------------------------------------------------- If MouseHit(1) Then If CheckMouse(60,460,150,550) Then ExecFile("cmd.exe 1") EndIf If CheckMouse(160,460,250,550) Then ExecFile(DesktopsExe$) End EndIf If CheckMouse(260,460,350,550) Then ExecFile(SEVENzipExe$) End EndIf EndIf ;--------------------------------------------------------------------------------------------------- Flip Wend Function CheckMouse(XStart%,YStart%,XEnd%,YEnd%) If MouseX()>=XStart% And MouseY()>=YStart% And MouseX()<=XEnd% And MouseY()<=YEnd% Then Return True Else Return False EndIf End Function ...aber nur mit "delay" ![]() |
||
![]() |
faeX |
![]() Antworten mit Zitat ![]() |
---|---|---|
Delay! Ich kotze gleich auf meine Tastatur! Nimm lieber CreateTimer![]() ![]() ![]() Und außerdem hast du nicht alle MouseHits ersetzt. Aus BlitzBasic: [AUSKLAPPEN] If MouseHit(1) Thenmachst du BlitzBasic: [AUSKLAPPEN] If mousetouches Then! So sollte es gehen. Und nimm dieses Delay raus, sonst schmorst du in der Programmierhölle Freundchen! ![]() EDIT: Und im übrigen: Du hast zwar Flip ![]() (Hä? Was willst du von mir??) Also: Das hier sollte helfen, um zu verstehen was Flip 1 macht. Allerdings klappt das meinen Erfahrung nach nicht immer... Also würde ich dir empfehlen lieber 'nen Timer zu nehmen. ![]() |
||
- Zuletzt bearbeitet von faeX am Sa, Feb 13, 2010 20:04, insgesamt einmal bearbeitet
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst "Mousetouches" auch nutzen.
Hier hast du nämlich wieder das Problem, dass du zwei mal direkt hintereinander MouseHit ![]() mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
mrtpcag |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mousetouches hab ich eingebaut (falsch Gepostet) und das hässliche ![]() ![]() -> geht trotzdem nicht -> Doch! jetzt geht's. Ich hatte statt BlitzBasic: [AUSKLAPPEN] If Mousetouches Then BlitzBasic: [AUSKLAPPEN] If Mousetouches<0 Then verwendet... _____________________________________________________________________________________ Auf jeden Fall mal ein rießiges Dankeschön an alle, die mir geholfen haben!!! _____________________________________________________________________________________ Hier nochmal der Endgültige Code: BlitzBasic: [AUSKLAPPEN] Graphics3D 800,600,0,2 |
||
- Zuletzt bearbeitet von mrtpcag am Sa, Feb 13, 2010 20:13, insgesamt 3-mal bearbeitet
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann zeige am Besten mal den neuen Code.
Der gezeigte scheint es ja nicht zu sein und die Änderungen können wir nicht hellsehen. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group