圖像隨箭頭移動,並將其視線轉向它的移動位置。 我有這段代碼,但是當圖像在360º時,我必須重新啓動它到0º。但是,當發生這種情況,在圖像中奇怪的方式跳到如何使用鍵從html文檔中旋轉和翻譯圖像? (javascript)
<html>
<head>
<title>Keys</title>
<script src="script.js"></script>
</head>
<body>
<img src="http://icon-icons.com/icons2/281/PNG/256/Airport-icon_30354.png" id="img" style="width:100px">
</body>
</html>
的script.js
對於我檢查我是否有增加或減少度旋轉圖像,然後檢查,如果我沒有離開的每個關鍵0º和360º的極限。如果是這樣,根據情況,我通過加或減360來將它轉換爲正確的值(爲此,我將「轉換」暫時取消,以防止圖像旋轉,然後再次添加),然後移動圖片
var cadena="";
var x=0;
var y=0;
var grados=0;
sumarGrados=15;
window.onload=function(e){
document.getElementById("img").style.transition="transform 0.5s linear";
document.onkeydown=function(ev){
switch(ev.keyCode){
case 39: cadena+="Right "; if(grados<45 || grados>225) sumarGrados=15; else if(grados>45 && grados<=225) sumarGrados=-15; else sumarGrados=0;
if(grados+sumarGrados<0) cambio(60,0,grados+360); else if (grados+sumarGrados>=360) cambio(60,0,grados-360);
else{x+=60; grados+=sumarGrados; document.getElementById("img").style.transform="translate("+x+"px,"+y+"px) rotate("+grados+"deg)";} break;
case 40: cadena+="Down "; if(grados<135 || grados>315) sumarGrados=15; else if(grados>135 && grados<=315) sumarGrados=-15; else sumarGrados=0;
if(grados+sumarGrados<0) cambio(0,60,grados+360); else if (grados+sumarGrados>=360) cambio(0,60,grados-360);
else{y+=60; grados+=sumarGrados; document.getElementById("img").style.transform="translate("+x+"px,"+y+"px) rotate("+grados+"deg)";} break;
case 38: cadena+="Up "; if(grados<315 && grados>=135) sumarGrados=15; else if(grados>315 || grados<135) sumarGrados=-15; else sumarGrados=0;
if(grados+sumarGrados<0) cambio(0,-60,grados+360); else if (grados+sumarGrados>=360) cambio(0,-60,grados-360);
else{y-=60; grados+=sumarGrados; document.getElementById("img").style.transform="translate("+x+"px,"+y+"px) rotate("+grados+"deg)";} break;
case 37: cadena+="Down "; if(grados<225 && grados>=45) sumarGrados=15; else if(grados>225 || grados<45) sumarGrados=-15; else sumarGrados=0;
if(grados+sumarGrados<0) cambio(-60,0,grados+360); else if (grados+sumarGrados>=360) cambio(-60,0,grados-360);
else{x-=60; grados+=sumarGrados; document.getElementById("img").style.transform="translate("+x+"px,"+y+"px) rotate("+grados+"deg)";} break;
}
console.log(grados);
};
}
function cambio(c_x,c_y,cambio){
document.getElementById("img").style.transition="transform 0.0s linear";
grados=cambio;
document.getElementById("img").style.transform="translate("+x+"px,"+y+"px) rotate("+grados+"deg)";
setTimeout('avanzar('+c_x+','+c_y+',)', 0);
}
function avanzar(c_x,c_y){
document.getElementById("img").style.transition="transform 0.5s linear";
x+=c_x; y+=c_y; grados+=sumarGrados;
document.getElementById("img").style.transform="translate("+x+"px,"+y+"px) rotate("+grados+"deg)";
}
我能做些什麼來解決這個問題?
應該採取什麼圖像實際上_do_?如果我繼續按右鍵,圖像是否繼續向右滾動?我建立了一個jsfiddle來進行試驗:https://jsfiddle.net/ay6euo07/1/ – Clonkex
問題是,當飛機完全轉彎(360º)時,圖像跳了一會兒。試着讓圖像變成一個圓圈,你會發現會發生什麼。 –
我已經制定出你想要的,並張貼了一個答案:) – Clonkex