//CODICE CHE MUOVE L'OGGETTO if (event.clientX-MouseX<0) oggetto.style.left=(BaseX+event.clientX-MouseX)+"px";; oggetto.style.top=(BaseY+event.clientY-MouseY)+"px"; }Funziona: così facendo, sono possibili solo gli spostamenti negativi, verso sinistra. Ora facciamo il contrario:
//CODICE CHE MUOVE L'OGGETTO if (event.clientX-MouseX>0) oggetto.style.left=(BaseX+event.clientX-MouseX)+"px";; oggetto.style.top=(BaseY+event.clientY-MouseY)+"px"; }Ecco, bene. Ovviamente funziona anche questo!
Ora facciamo che se il margine destro dell'oggetto arriva a 400 l'oggetto non si può spostare più a destra.
if(destro(oggetto)>400){
if (event.clientX-MouseX<0) oggetto.style.left=(BaseX+event.clientX-MouseX)+"px";
}else{
oggetto.style.left=(BaseX+event.clientX-MouseX)+"px";
}
Ecco...Adesso proviamo a svilupparlo con le funzioni che esprimono la sovrapposizione a un ostacolo...
if(daSinistra(oggetto,ostacolo)){
if (event.clientX-MouseX<0) oggetto.style.left=(BaseX+event.clientX-MouseX)+"px";
}else{
oggetto.style.left=(BaseX+event.clientX-MouseX)+"px";
}
oggetto.style.top=(BaseY+event.clientY-MouseY)+"px";
Funziona ancora. E ovviamente aggira l'ostacolo.Però è impreciso perchè a seconda della velocità del movimento l'oggetto si arresta in un punto variabile.
Organizziamo diverse istruzioni, una che muove a destra, una che muove a sinistra...
Creando queste due funzioni:
function MuoviADestra(){
if(event.clientX-MouseX>0) oggetto.style.left=(BaseX+event.clientX-MouseX)+"px";
}
function MuoviASinistra(){
if(event.clientX-MouseX<0) oggetto.style.left=(BaseX+event.clientX-MouseX)+"px";
}
E creando queste due variabili booliane:
var MoveRight=true; var MoveLeft=true;io riesco a interrompere il movimento dell'oggetto quando il suo margine destro supera 400 in questo modo:
//CODICE CHE MUOVE L'OGGETTO
if(MoveRight) MuoviADestra();
if(MoveLeft) MuoviASinistra();
if (destro(oggetto)>400) {
oggetto.style.left=(400-larghezza(oggetto))+"px";
MoveRight=false;
}else{
MoveRight=true;
}
In questo modo l'oggetto non si sposta virtualmente, come accadeva prima. Almeno credo...
Nessun commento:
Posta un commento