//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