JavascriptProva

domenica 10 febbraio 2013

Ancora sulla direzione della sovrapposizione dell'oggetto all'ostacolo, usando le metà delle proiezioni dell'ostacolo

Costruiamo progressivamente queste funzioni altrimenti combiniamo un casino che non finisce più.

Le funzioni horOver e vertOver accertano che l'oggetto sia sulla proiezione orizzontale e, rispettivamente, verticale dell'ostacolo.

Poi abbiamo funzioni che accertano se l'oggetto sia sulla parte destra o sinistra della proiezione orizzontale, e, rispettivamente, verticale dell'oggetto.
Proseguo solo con l'orizzontale.
Come posso chiamare la funzione che mi accerta la presenza dell'oggetto sull'emiproiezione destra o sinistra?
Forse horOverDx e horOverSx. Mi sembra una denominazione mnemonicamente abbastanza facile.
Eccole:
function horOver(oggHi,oggLo,ost){
 if(oggLo>=alto(ost) && oggHi<=basso(ost)) return true;
}

function vertOver(oggSx, oggDx, ost){
 if(oggDx>=sinistro(ost) && oggSx <destro(ost)) return true;
}

function horOverDx(oggHi,oggLo,oggDx,ost){
 if(horOver(oggHi,oggLo,ost) && oggDx>=sinistro(ost)) return true;
}

function horOverSx(oggHi,oggLo,oggSx,ost){
 if(horOver(oggHi,oggLo,ost) && oggSx<=destro(ost)) return true;
}
Ecco. Ora vediamo se possiamo far capire al programma se l'oggetto arriva da destra o da sinistra.
function OnMouseMove(){
 prevSx=sinistro(oggetto);
 prevDx=destro(oggetto);
 
 oggetto.style.left=BaseX+event.clientX-MouseX;
  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";
Bene! Se l'oggetto va a sovrapporsi all'ostacolo da sinistra, nella casella test appare "Da sinistra", mentre se va a sovrapporsi da destra nella casella test appare "Da destra".
Riuscito!

Nessun commento:

Posta un commento