Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
13.04.2008, 21:51
jeykey



Ich bin zurzeit dabei Javascript zu lernen, und hab mir auch schon mehrere kleine Testspielereien geschrieben. Bisher lief alles einwandfrei und ich konnte alle Probleme selbst lösen. Mein jetziges "Projekt" funktioniert zwar auch schon, aber ich bräuchte noch eine Zusatzfunktion, und im Moment komm ich einfach nicht drauf wie ich das lösen könnte.
Hier erst einmal einen Link, damit ihr euch selbst schnell ein Bild davon machen könnt um was es geht:
Beispiel

Und hier den Queltext:
Quellcode:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
    <title>MausPosition</title>
    </head>
    
    <body id="test">

    <script type="text/javascript">
    function getMousePos(ereignis)    {
        if (!ereignis)

        ereignis = window.event;
        mouseX = ereignis.clientX;
        mouseY = ereignis.clientY;
        document.getElementById('anzeige').innerHTML = mouseX + 'x/' + mouseY + 'y';
        document.getElementById('anzeige').style.left = (mouseX + 25) + 'px';
        document.getElementById('anzeige').style.top = (mouseY) + 'px';
        
        new_input = document.createElement('img');
        new_input.src = 'maus.gif';
        new_input.style.left = (mouseX) + 'px';
        new_input.style.top = (mouseY) + 'px';
        new_input.style.position = 'absolute';
        document.getElementById('test').appendChild(new_input);
    }
    
    document.onmousemove = getMousePos;
    </script><span id="anzeige" style="position: absolute;"></span>
    </body>
</html>
Nun zum Problem:
Ich möchte, das man mit der Maus nur zeichnen kann, wenn man noch zusätzlich die linke Maustaste gedrückt hält. Ich brauche irgentwie noch eine Abfrage ob die Linke Maustaste gedrückt ist, aber ich hab bisher noch nicht rausgefunden wie ich das machen könnte.

--

"Nichts wird die Chance auf ein Überleben auf der Erde so steigern, wie der Schritt zur vegetarischen Ernährung." (Albert Einstein, Physiker)


Dieser Beitrag wurde am 13.04.2008 um 22:04 von jeykey bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
13.04.2008, 22:23
Bakerman



Hmmm also ich bin mir net sicher ( hab auch selbst och net allzu viel mit js gemacht ) aber könnte man nicht ein div den gesamten bg ausfüllen lassen und dann eine onclick methode draufsetzten ... also in etwa so :
Quellcode:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
    <title>MausPosition</title>
    <script type="text/javascript">
       document.onmousemove =  drueckmich;
        function drueckmich(){      
             document.onmousedown = getMousePos;
       }
        function getMousePos(ereignis)    {
        if (!ereignis)  ereignis = window.event;
        mouseX = ereignis.clientX;
        mouseY = ereignis.clientY;
        document.getElementById('anzeige').innerHTML = mouseX + 'x/' +     mouseY + 'y';
        document.getElementById('anzeige').style.left = (mouseX + 25) + 'px';
        document.getElementById('anzeige').style.top = (mouseY) + 'px';
        new_input = document.createElement('img');
        new_input.src = 'maus.gif';
        new_input.style.left = (mouseX) + 'px';
        new_input.style.top = (mouseY) + 'px';
        new_input.style.position = 'absolute';
        document.getElementById('test').appendChild(new_input);
    }
</script>
</head>
<body id="test">
    <span id="anzeige" style="position: absolute;"></span>
    </body>
</html>

--

Das Leben ist eine sexuell übertragbare Krankheit, die zu 100% tödlich endet.


Dieser Beitrag wurde am 13.04.2008 um 22:41 von Bakerman bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
13.04.2008, 22:31
Bakerman



Ach vergiss es habs gerade getestet ... so funktioniert es nicht^^
Na ja werd noch n bisl rumprobieren ;)

--

Das Leben ist eine sexuell übertragbare Krankheit, die zu 100% tödlich endet.

zum Seitenanfang zum Seitenende Profil || Suche
003
13.04.2008, 22:35
jeykey



ja is mir auch grad aufgefallen, aber trotzdem danke^^

--

"Nichts wird die Chance auf ein Überleben auf der Erde so steigern, wie der Schritt zur vegetarischen Ernährung." (Albert Einstein, Physiker)

zum Seitenanfang zum Seitenende Profil || Suche
004
13.04.2008, 22:42
Bakerman



Letzte Version ( wieder im oberen Beitrag ) :
Immerhin .. wenn man jetzt klickt wird die maus einmal abgebildet :D

Hoffe das kann hier wer lösen will jetzt auch wissen wie das geht xD

--

Das Leben ist eine sexuell übertragbare Krankheit, die zu 100% tödlich endet.

zum Seitenanfang zum Seitenende Profil || Suche
005
13.04.2008, 22:57
rawe



setz doch das Mousemove-Event sobald eine Maustaste gedrückt wird...
document.onmousedown = mdn;
function mdn(e)
{
document.onmousemove=getMousePos;
}

und setze das Mousemove-Event zurück sobold eine Maustaste losgelassen wird...
document.onmouseup = mup;
function mup(e)
{
document.onmousemove=function(){};
}

ist ungetestet, sollte aber funktionieren, ggf. auch bei mup einfach =0 setzen.

--

O o
/¯¯/_o___o___o___o____o__
\__\¯¯o¯¯¯o¯¯¯¯¯¯o¯¯¯¯¯¯o
i'm doctoroctogonnafuckinggonnapus blaaaaaaaaaaargggggg-


Dieser Beitrag wurde am 13.04.2008 um 23:00 von rawe bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
14.04.2008, 12:37
Bakerman



so wird aber die getMousePos nur einmal ausgeführt ... man müsste einen Interval setzen und dieses via ommouseup stoppen

Werd mich mal ransetzten ^^

--

Das Leben ist eine sexuell übertragbare Krankheit, die zu 100% tödlich endet.

zum Seitenanfang zum Seitenende Profil || Suche
007
14.04.2008, 12:55
Bakerman



Also irgendwie so ... da steckt noch ein Fehler drinn aber ich bin zu blöd den zu finden :'(
Quellcode:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
    <title>MausPosition</title>
    <script type="text/javascript">
       document.onmousedown = start_timer;
      document.onmouseup = stop_timer;
      function start_timer (){
                window.setInterval("getMousePos()", 100);
       }            
       function stop_timer(){
                window.clearInterval();
       }
        function getMousePos(Ereignis)    {
        if (!Ereignis ) { Ereignis = window.event; }
        mouseX = Ereignis.clientX;
        mouseY = Ereignis.clientY;
        document.getElementById('anzeige').innerHTML = mouseX + 'x/' +     mouseY + 'y';
        document.getElementById('anzeige').style.left = (mouseX + 25) + 'px';
        document.getElementById('anzeige').style.top = (mouseY) + 'px';
        new_input = document.createElement('img');
        new_input.src = 'maus.gif';
        new_input.style.left = (mouseX) + 'px';
        new_input.style.top = (mouseY) + 'px';
        new_input.style.position = 'absolute';
        document.getElementById('test').appendChild(new_input);
        }
</script>
</head>
<body id="test">
    <span id="anzeige" style="position: absolute;"></span>
    </body>
</html>

--

Das Leben ist eine sexuell übertragbare Krankheit, die zu 100% tödlich endet.

zum Seitenanfang zum Seitenende Profil || Suche
008
14.04.2008, 14:55
Chronial



Das ist doch kein so'n Hexenwerk:

Quellcode:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head><title>MausPosition</title></head>
    
    <body id="test">
    <script type="text/javascript">
var isMouseDown = false;
function getMousePos(ereignis)    {
   if (!ereignis)
      ereignis = window.event;
   mouseX = ereignis.clientX;
   mouseY = ereignis.clientY;
   document.getElementById('anzeige').innerHTML = mouseX + 'x/' + mouseY + 'y';
   document.getElementById('anzeige').style.left = (mouseX + 25) + 'px';
   document.getElementById('anzeige').style.top = (mouseY) + 'px';
  
   if (isMouseDown){
      new_input = document.createElement('img');
      new_input.src = 'maus.gif';
      new_input.style.left = (mouseX) + 'px';
      new_input.style.top = (mouseY) + 'px';
      new_input.style.position = 'absolute';
      document.getElementById('test').appendChild(new_input);
   }
}
function mouseDown(){
   isMouseDown = true;
   return false;
}
function mouseUp(){
   isMouseDown = false;
}

document.onmousedown = mouseDown;
document.onmouseup = mouseUp;
document.onmousemove = getMousePos;
    </script><span id="anzeige" style="position: absolute;"></span>
    </body>
</html>

--

"tsuji-giri" (japanisch) - ein neues Schwert an einem Passanten ausprobieren

zum Seitenanfang zum Seitenende Profil || Suche
009
14.04.2008, 15:39
jeykey



ok, hab jetzt schon verstanden wie's geht :-)

vielen dank an alle

--

"Nichts wird die Chance auf ein Überleben auf der Erde so steigern, wie der Schritt zur vegetarischen Ernährung." (Albert Einstein, Physiker)

zum Seitenanfang zum Seitenende Profil || Suche
010
15.04.2008, 15:54
Bakerman



@ Chronial :
Hexe Hexe
Als nächstes sagste noch das du 2 stellige Zahlen im Kopf addieren kannst :D

--

Das Leben ist eine sexuell übertragbare Krankheit, die zu 100% tödlich endet.

zum Seitenanfang zum Seitenende Profil || Suche
011
15.04.2008, 17:11
rawe



An die Methode mit der Status-Variable dachte ich zuerst auch - aber so wird jedes mal wenn die Maus bewegt wird die Variable überprüft... wäre es nicht performance-technisch sinnvoller das mousemove-Event bei mousedown auf getMousePos zu setzen und bei mouseup wieder zurückzusetzen?

--

O o
/¯¯/_o___o___o___o____o__
\__\¯¯o¯¯¯o¯¯¯¯¯¯o¯¯¯¯¯¯o
i'm doctoroctogonnafuckinggonnapus blaaaaaaaaaaargggggg-


Dieser Beitrag wurde am 15.04.2008 um 17:13 von rawe bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
012
15.04.2008, 20:20
Chronial



Programmieren ist immer eine Abwägung zwischen Performance und Einfachheit. Wir reden hier über das Überprüfen einer Variablen. Selbst in Javascript ist der Aufwand dafür nahezu null. Wenn du anfängst Performance in diesem Level zu tunen wird dein Programm am Ende extrem unleserlich, unwartbar und höchstwarscheinlich dadurch auch verbuggt und langsam.

Aber um deine Frage zu beantworten: Performance-technisch wäre das absolut sinnvoller.

--

"tsuji-giri" (japanisch) - ein neues Schwert an einem Passanten ausprobieren

zum Seitenanfang zum Seitenende Profil || Suche