Javascript 我希望图像沿着其旋转角度的斜边移动,但有时会以不同的方式移动

Javascript 我希望图像沿着其旋转角度的斜边移动,但有时会以不同的方式移动,javascript,math,Javascript,Math,我让我的小图像旋转一个随机的角度。我希望它沿着这个角度的斜边移动,但它会以不同的方式移动,这是代码 <!DOCTYPE html> <html> <head> <title>heart</title> <meta charset="UTF-8"> </head> <body> <script> // when click, an image pop up

我让我的小图像旋转一个随机的角度。我希望它沿着这个角度的斜边移动,但它会以不同的方式移动,这是代码

<!DOCTYPE html>

<html>
<head>
    <title>heart</title>
    <meta charset="UTF-8">  
</head>

<body>
    <script>
  // when click, an image pop up
        // use addEventListener to do so 
        let timer=null;
        let imgList=[];
        document.addEventListener("click",function(event){
            let img= document.createElement("img");
            img.style.position="absolute";
            img.style.left=(event.clientX-32)+"px";
            img.style.top=(event.clientY-32)+"px";

            img.src="1.png";

            var de = Math.floor(Math.random()*60-30);
            img.style.transform="rotate(" + de + "deg)";             document.body.appendChild(img);

            setTimeout(draw,1000,de);

            function draw(de){
                 //convert px to intgeter
                 var x=parseInt(img.style.left,10);
                 var y=parseInt(img.style.top,10);
                 var id = setInterval(frame,10);
                 var pos=0;
                 function frame(){
                     if (pos==36){
                         clearInterval(id);
                         img.remove();
                     }
                     else{
                         pos++;
                         img.style.top=(y-pos)+'px';
                         img.style.left=(Math.tan(de)*pos)+x+'px';
                     }
 });
  </script>
</body>

心
//单击时,会弹出一个图像
//使用addEventListener执行此操作
设定时器为空;
设imgList=[];
document.addEventListener(“单击”),函数(事件){
设img=document.createElement(“img”);
img.style.position=“绝对”;
img.style.left=(event.clientX-32)+“px”;
img.style.top=(event.clientY-32)+“px”;
img.src=“1.png”;
var de=数学地板(数学随机()*60-30);
img.style.transform=“rotate”(+de+“deg)”;document.body.appendChild(img);
设置超时(绘图,1000,de);
功能图(de){
//将px转换为intgeter
var x=parseInt(img.style.left,10);
var y=parseInt(img.style.top,10);
var id=设置间隔(第10帧);
var-pos=0;
函数框架(){
如果(位置==36){
清除间隔(id);
img.remove();
}
否则{
pos++;
img.style.top=(y-pos)+'px';
img.style.left=(Math.tan(de)*pos)+x+'px';
}
});


希望有人能帮助我。非常感谢。我已经考虑了一个小时的数学问题。tan希望争论以弧度为单位,你通过了学位。这有点有效,但每次都
de%(PI/2)==0
,结果改变了符号,这意味着方向改变了。你必须在通过之前将度转换为弧度,
rad=Math.PI/180*de
。谢谢!它对我很有效!
Math。tan
希望参数是弧度,你通过了度。它有点有效,但每次都是
de%(PI/2)==0
,结果改变了符号,这意味着方向改变了。你必须在通过之前将度转换为弧度,
rad=Math.PI/180*de
。谢谢!它对我很有效