MausSpeed - Problem [gelöst]
Übersicht

![]() |
ThunderBetreff: MausSpeed - Problem [gelöst] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jetzt gibts bei mir ein (meiner Meinung nach) sehr komisches Problem:
Code: [AUSKLAPPEN] Graphics 800,600,0,2 SetBuffer BackBuffer() Local x,y ;Koordinaten Local timer=CreateTimer(60) Repeat Cls If MouseDown(1) And MouseIn(x,y,100,100) Then x=x+MouseXSpeed() y=y+MouseYSpeed() EndIf Rect x,y,100,100,0 Flip 0 WaitTimer timer Until GetKey() End Function MouseIn(x,y,w,h) Local mx=MouseX() Local my=MouseY() Return (mx>=x)*(my>=y)*(mx<=x+w)*(my<=y+h) End Function Bei dem Code sollte man eigentlich, wenn man ins Rechteck hineinklickt, es verschieben können ohne dass der Mauszeiger an die linke obere Ecke des Rechtecks springt. Komischerweise tut er das, deswegen habe ich den Codeabschnitt: Code: [AUSKLAPPEN] If MouseDown(1) And MouseIn(x,y,100,100) Then x=x+MouseXSpeed() y=y+MouseYSpeed() EndIf genauer angeschaut und bin alles durchgegangen. Wenn MouseXSpeed = MouseYSpeed = 0 dann sollten x und y eigentlich gleich bleiben, oder? |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
- Zuletzt bearbeitet von Thunder am Mo, Apr 06, 2009 13:17, insgesamt einmal bearbeitet
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich hab das immer anders gelöst.
Ich bin hingegangen und hab folgendes gemacht: Code: [AUSKLAPPEN] If MouseDown(1) And MouseX() > x And MouseY() > y And MouseX() < (x+100) And MouseY() < (y+100) Then . . . Also Nach diesem Prinzip jedenfalls... Dann KANN man nur in dem rechteck liegen. Kannst du ja mal versuchen (ob mans genauso schreiben kann weiß ich jetzt auswendig nicht, müsste ich testen, aber ich hoffe du erkennst das Prinzip.) Lg, M0rgenstern |
||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics 800,600,0,2 SetBuffer BackBuffer() Local x,y ;Koordinaten Local timer=CreateTimer(60) Repeat Cls XSpeed = MouseXSpeed() YSpeed = MouseYSpeed() If MouseDown(1) And MouseIn(x,y,100,100) Then x=x+XSpeed y=y+YSpeed EndIf Rect x,y,100,100,0 Flip 0 WaitTimer timer Until GetKey() End Function MouseIn(x,y,w,h) Local mx=MouseX() Local my=MouseY() Return (mx>=x)*(my>=y)*(mx<=x+w)*(my<=y+h) End Function MouseXSpeed und MouseYSpeed liefern die Geschwindigkeit zwischen dem jetzigen und dem letzten Aufruf zurück - wenn du es nur aufrufst, wenn die Maus im Rechteck liegt und die Maustaste gedrückt bleibt, kommen die Werte immer so raus, dass die linke obere Ecke deines Rechtecks an die Mausposition verschoben wird. Rufe es einfach jedesmal in der Hauptschleife auf und das Problem erledigt sich. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Morgenstern: Das ist mein Code, nur anders geschrieben.
thx Noobody |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiß dass es eigentlich das selbe ist.
Aber ich hab manchmal bei BLitz einfach das Gefühl dass es bei einigen Dingen rumzickt und wenn mans ein wenig umstellt dann passierts nimmer. |
||
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@M0rgenstern
Blitz hat nicht rumgezick es ist einfach so das es ein Denkfehler von Thunder war, die Geschwindiegkeit der Maus, genau dann abzufragen wenn es im Kasten ist. Hat Noobody aber eigentlich schon sehr gut erklärt. mfg ich |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group