Mentre finora ero riuscito a superare i problemi, adesso invece il problema è completamente nuovo e mi ci sto scervellando teoricamente da tempo.
Meglio mettere tutto in pratica e sperimentare, anziché fasciarsi la testa con le obiezioni a livello teorico.
L'idea di base è mettere la variabile direzione come proprietà di ogni oggetto ostacolo.
Proviamo, nella dichiarazione del costruttore di rect:
function rect(x,y,w,h,colore){
this.direzione="";
this.x=x;
this.y=y;
this.w=w;
this.h=h;
this.colore=colore
this.disegna=function(){
ctx.fillStyle=this.colore;
ctx.beginPath();
ctx.rect(this.x,this.y,this.w,this.h);
ctx.closePath();
ctx.fill();
}
}
E a questo punto il programma dovrà leggere la direzione da ogni singolo oggetto... Vediamo di costruire un codice plausibile...
function OnMouseMove(evt){
puntoX=evt.pageX-canvas.offsetLeft;
puntoY=evt.pageY-canvas.offsetTop;
ostacolo.direzione="";
if(scavalcaDestra(puntoX,rettangolo,ostacolo)) ostacolo.direzione="destra";
if(scavalcaSinistra(puntoX,rettangolo,ostacolo)) ostacolo.direzione="sinistra";
if(scavalcaAlto(puntoY,rettangolo,ostacolo))ostacolo.direzione="alto";
if(scavalcaBasso(puntoY,rettangolo,ostacolo))ostacolo.direzione="basso";
scrivi(ostacolo.direzione);
rettangolo.x=puntoX;
rettangolo.y=puntoY;
if(ostacolo.direzione=="basso")rettangolo.y=alto(ostacolo)-rettangolo.h;
if(ostacolo.direzione=="alto")rettangolo.y=basso(ostacolo);
if(ostacolo.direzione=="destra")rettangolo.x=sinistra(ostacolo)-rettangolo.w;
if(ostacolo.direzione=="sinistra")rettangolo.x=destra(ostacolo);
}
Funziona esattamente come prima.Adesso il problema è attribuire a ogni ostacolo un valore diverso...
Nessun commento:
Posta un commento