JavascriptProva

domenica 10 febbraio 2013

Sintesi delle funzioni che rilevano la direzione di sovrapposizione di un oggetto a un ostacolo

Ora blocchiamo l'oggetto.

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