Prima fondiamo le funzioni, in modo da isolare il lavoro sporco...
Ecco il codice che verifica la direzione usando le funzioni predette:
if(horOverDx(alto(oggetto),basso(oggetto),destro(oggetto),ostacolo)&& prevDx<=sinistro(ostacolo)) $("test").innerHTML="Da sinistra";
if(horOverSx(alto(oggetto),basso(oggetto),sinistro(oggetto),ostacolo)&& prevSx>=destro(ostacolo)) $("test").innerHTML="Da destra";
if(vertOverHi(sinistro(oggetto),destro(oggetto),basso(oggetto),ostacolo) && prevLo<=alto(ostacolo)) $("test").innerHTML="Da alto";
if(vertOverLo(sinistro(oggetto),destro(oggetto),alto(oggetto),ostacolo) && prevHi>=basso(ostacolo)) $("test").innerHTML="Da basso";
Come unificarlo?Creo un'unica funzione verifica:
function verificaDirezione(oggSx,oggDx,oggHi,oggLo,ost){
if(horOverDx(oggHi,oggLo,oggDx,ost)&& prevDx<=sinistro(ost)) $("test").innerHTML="Da sinistra";
if(horOverSx(oggHi,oggLo,oggSx,ost)&& prevSx>=destro(ost)) $("test").innerHTML="Da destra";
if(vertOverHi(oggSx,oggDx,oggLo,ost) && prevLo<=alto(ost)) $("test").innerHTML="Da alto";
if(vertOverLo(oggSx,oggDx,oggHi,ost) && prevHi>=basso(ost)) $("test").innerHTML="Da basso";
}
Eccola, e viene richiamata così:
function OnMouseMove(){
prevSx=sinistro(oggetto);
prevDx=destro(oggetto);
prevHi=alto(oggetto);
prevLo=basso(oggetto);
oggetto.style.left=BaseX+event.clientX-MouseX;
oggetto.style.top=BaseY+event.clientY-MouseY;
verificaDirezione(sinistro(oggetto),destro(oggetto),alto(oggetto),basso(oggetto),ostacolo);
}
Funziona!
Nessun commento:
Posta un commento