function OnMouseMove(){ //CODICE CHE MEMORIZZA LE COORDINATE PRIMA DELLO SPOSTAMENTO prevSin=sinistro(oggetto); prevAlt=alto(oggetto); prevDex=destro(oggetto); prevBas=basso(oggetto); oggetto.style.left=(BaseX+event.clientX-MouseX)+"px";; oggetto.style.top=(BaseY+event.clientY-MouseY)+"px"; }
Quando l'oggetto viene mosso, prima che si abbia lo spostamento vengono memorizzate le coordinate che l'oggetto deteneva prima dello spostamento stesso.
Adesso, voglio che all'ascissa 400 il movimento a destra si arresti.
Come fare?
Ho pronte alcune funzioni:
//FUNZIONI CHE ESPRIMONO LE SOVRAPPOSIZIONI DELL'OGGETTO ALL'OSTACOLO. function daSinistra(obj,ost){ if(overH(obj,ost) && destro(obj)>sinistro(ost)){ return true; } else { return false; } } function daDestra(obj,ost){ if(overH(obj,ost) && sinistro(obj)<destro(ost)){ return true; } else { return false; } } function daAlto(obj,ost){ if(overV(obj,ost) && basso(obj)>alto(ost)){ return true; } else { return false; } } function daBasso(obj,ost){ if(overV(obj,ost) && alto(obj)<basso(ost)){ return true; } else { return false; } }...costruite su queste altre funzioni che esprimono la sovrapposizione dell'oggetto alla proiezione orizzontale o verticale dell'ostacolo (un po' cervellotico):
function overH(obj,ost){ if(basso(obj)>alto(ost) && alto(obj)<basso(ost)){ return true; } else { return false; } } function overV(obj,ost){ if(destro(obj)>sinistro(ost) && sinistro(obj)<destro(ost)){ return true; } else { return false; } }
Bene, comunque le funzioni che dobbiamo considerare per verificare la sovrapposizione da destra, sinistra, alto e basso sono queste:
daDestra(obj,ost), daSinistra(obj,ost), daAlto(obj,ost) e daBasso(obj,ost).
Anzi quasi quasi le metto su un modulo a parte così non ci confondiamo le idee...
Sì, lo faccio subito così le tolgo dalle balle.
Fatto. E inserisco il collegamento:
<script src="overlap.js"></script>Fatto... Adesso si può ragionare, tenendo sempre presenti i nomi delle funzioni.
Nessun commento:
Posta un commento