Div mit Mauszeiger mitdrehen lassen Javascript

  • JavaScript

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von shutdown.

    Div mit Mauszeiger mitdrehen lassen Javascript

    Hi Leute.

    Ich versuche nun schon eine ganze Weile ein Div, per Javascript, mit der Maus drehen zu lassen.

    Also das Div soll sozusagen immer zur Maus "hinsehen" und an seinem Platz rotieren.

    Dafür habe ich jetzt schon die Funktion zur Bestimmung der Mausposition
    und die zum drehen eines Divs. So jetzt wollte ich mal fragen wie ich
    dass mit dem drehen zum Mauszeiger anstellen könnte?

    Ich habe schon versucht den Winkel immerwieder neu berechnen zu lassen,was aber sehr schwer ist.

    Villeicht gibt es ja dafür eine Funktion oder irgendeine Parend child beziehung die ich nutzen könnte und nur nicht kenne.

    Ich hoffe ihr habt mein Problem verstanden und habt vl. 1-2 Lösungsansätze für mich parat.

    Lg shutdown.

    Myrax schrieb:

    Du kannst eigentlich mit JS das MouseMove-Event abonnieren, berechnen und dann sowas anwenden: davidwalsh.name/css-transform-rotate
    Falls es ein Spiel werden soll: lass es. Für JS bzw. Webbrowser-Spiele gibt es Canvas.

    Naja eine Funktion zum drehen von divs habe ich schon:

    HTML-Quellcode

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <title></title>
    5. <style>
    6. </style>
    7. </head>
    8. <body>
    9. <div title="random" style="top:250px; position:absolute; left:224px;" id="random" ><img src="bild.bmp" alt="Bild nicht mehr verfügbar" /></div>
    10. <script type="text/javascript">
    11. function rotate (elem, deg)
    12. {
    13. if (navigator.appName=='Microsoft Internet Explorer')
    14. {
    15. rad = deg*Math.PI/180;
    16. elem.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11='1.0', sizingmethod='auto expand')";
    17. elem.filters.item(0).M11 = Math.cos(rad);
    18. elem.filters.item(0).M12 = -Math.sin(rad);
    19. elem.filters.item(0).M21 = Math.sin(rad);
    20. elem.filters.item(0).M22 = Math.cos(rad);
    21. elem.style.marginLeft=((canvsize-elem.offsetWidth)/2)+'px'
    22. elem.style.marginTop=((canvsize-elem.offsetHeight)/2)+'px'
    23. }
    24. else
    25. {
    26. elem.style.MozTransformOrigin = "5px 5px";
    27. elem.style.WebkitTransformOrigin = "5px 5px";
    28. elem.style.OTransformOrigin = "5px 5px";
    29. elem.style.MsTransformOrigin = "5px 5px";
    30. elem.style.transformOrigin = "5px 5px";
    31. elem.style.MozTransform = 'rotate(' + deg + 'deg)';
    32. elem.style.WebkitTransform = 'rotate(' + deg + 'deg)';
    33. elem.style.OTransform = 'rotate(' + deg + 'deg)';
    34. elem.style.MsTransform = 'rotate(' + deg + 'deg)';
    35. elem.style.transform = 'rotate(' + deg + 'deg)';
    36. }
    37. }
    38. </script>
    39. </body>
    40. </html>


    UNd die Mausposition habe ich ausch schon ermittelt:

    HTML-Quellcode

    1. document.onmousemove = function(e) {
    2. X = e.pageX || event.clientX + document.body.scrollLeft;
    3. Y = e.pageY || event.clientY + document.body.scrollTop;
    4. };

    Aber die Berechnung ist noch ein bisschen ein Problem. Wie kann ich dann den Winkel ausrechenen?
    Muss ich dass wirklich jedes mal dann über den Sinus/Cosinus-Satz machen, oder gibt es da schon etwas vordefiniertes???