var BaseX, BaseY; var MouseX, MouseY; var oggetto; var ostacolo; var ostacolo2; var prevSx,prevDx,prevHi,prevLo; var MotoOrizzontale=true; var MotoVerticale=true; var ostacoli; var Sx,Hi; var ConsentitoADestra; var ConsentitoASinistra=true; function OnMouseDown(){ ostacoli=document.getElementsByTagName("div"); ostacolo=$("ostacolo1"); ostacolo2=$("ostacolo2"); oggetto=event.srcElement; oggetto.onselectstart=function(){return false}; BaseX=EN(oggetto.currentStyle.left); BaseY=EN(oggetto.currentStyle.top); MouseX=event.clientX; MouseY=event.clientY; document.onmousemove=OnMouseMove; document.onmouseup=OnMouseUp; } function OnMouseMove(){ prevSx=sinistro(oggetto); prevDx=destro(oggetto); prevHi=alto(oggetto); prevLo=basso(oggetto); Sx=BaseX+event.clientX-MouseX; Hi=BaseY+event.clientY-MouseY $("test").innerHTML=DirezioneOrizzontale(Sx,prevSx); if (ConsentitoADestra){ if(DirezioneOrizzontale(Sx,prevSx)=="destra") oggetto.style.left=Sx+"px"; } if (ConsentitoASinistra){ if(DirezioneOrizzontale(Sx,prevSx)=="sinistra") oggetto.style.left=Sx+"px"; } oggetto.style.top=Hi+"px"; } function DirezioneOrizzontale(X, prevX){ if(X>prevX) { return "destra"; }else if(X<prevX) { return "sinistra"; }else{ return "fermo"; } } /*if(sinistro(oggetto)<100) { MotoOrizzontale=false; oggetto.style.left=(100)+"px"; }else{ MotoOrizzontale=true; } if(basso(oggetto)>300) { MotoVerticale=false; oggetto.style.top=(300-altezza(oggetto))+"px"; }else{ MotoVerticale=true; }*/ function OnMouseUp(){ document.onmousemove=null; } //FUNZIONI DINAMICHE VERSO LE QUATTRO SEMIPROIEZIONI //---------------------------------------------------------------------------------------- function OggettoVersoLaSemiproiezioneOrizzontaleDestra(ost){ if(prevDx<=sinistro(ost) && OggettoNellaSemiproiezioneOrizzontaleDestra(ost)) return true; } function OggettoVersoLaSemiproiezioneOrizzontaleSinistra(ost){ if(prevSx>=destro(ost) && OggettoNellaSemiproiezioneOrizzontaleSinistra(ost)) return true; } function OggettoVersoLaSemiproiezioneVerticaleInferiore(ost){ if(prevLo<=alto(ost) && OggettoNellaSemiproiezioneVerticaleInferiore(ost)) return true; } function OggettoVersoLaSemiproiezioneVerticaleSuperiore(ost){ if(prevHi>=basso(ost) && OggettoNellaSemiproiezioneVerticaleSuperiore(ost)) return true; } //----------------------------------------------------------------------------------------- //FUNZIONI STATICHE SULLE QUATTRO SEMIPROIEZIONI //---------------------------------------------------------------------------------------------- function OggettoNellaSemiproiezioneOrizzontaleDestra(ost){ if(OggettoNellaProiezioneOrizzontale(ost) && OggettoNelSemicampoDestro(ost)) return true; } function OggettoNellaSemiproiezioneOrizzontaleSinistra(ost){ if(OggettoNellaProiezioneOrizzontale(ost) && OggettoNelSemicampoSinistro(ost)) return true; } function OggettoNellaSemiproiezioneVerticaleInferiore(ost){ if(OggettoNellaProiezioneVerticale(ost) && OggettoNelSemicampoInferiore(ost)) return true; } function OggettoNellaSemiproiezioneVerticaleSuperiore(ost){ if(OggettoNellaProiezioneVerticale(ost) && OggettoNelSemicampoSuperiore(ost)) return true; } //---------------------------------------------------------------------------------------------- //FUNZIONI STATICHE SULLE DUE PROIEZIONI //---------------------------------------------------------------------------------------------- function OggettoNellaProiezioneOrizzontale(ost){ if(OggettoNelSemicampoSuperiore(ost) && OggettoNelSemicampoInferiore(ost)) return true; } function OggettoNellaProiezioneVerticale(ost){ if(OggettoNelSemicampoDestro(ost) && OggettoNelSemicampoSinistro(ost)) return true; } //----------------------------------------------------------------------------------------------- //FUNZIONI STATICHE SUI QUATTRO SEMICAMPI //----------------------------------------------------------------------------------------------- function OggettoNelSemicampoDestro(ost){ if(destro(oggetto)>sinistro(ost)) return true; } function OggettoNelSemicampoSinistro(ost){ if(sinistro(oggetto)<destro(ost)) return true; } function OggettoNelSemicampoInferiore(ost){ if(basso(oggetto)>alto(ost)) return true; } function OggettoNelSemicampoSuperiore(ost){ if(alto(oggetto)<basso(ost)) return true; } //---------------------------------------------------------------------------------------------- function sinistro(ogg){ return EN(ogg.currentStyle.left); } function larghezza(ogg){ return EN(ogg.currentStyle.width); } function destro(ogg){ return EN(sinistro(ogg)+larghezza(ogg)); } function alto(ogg){ return EN(ogg.currentStyle.top); } function altezza(ogg){ return EN(ogg.currentStyle.height); } function basso(ogg){ return EN(alto(ogg)+altezza(ogg)); }
Miei appunti liberi, senza pretesa di dire necessariamente sempre cose giuste o sensate, durante l'apprendimento e la pratica della programmazione
JavascriptProva
giovedì 7 marzo 2013
Appunto bozza ennesima strategia nel tentativo di un codice per le collisioni (dannazione!)
Una bozza dell'ennesimo tentativo di strategia per le collisioni (speriamo che sia la volta buona). Appunto per ricopiare il codice da altro computer.
Iscriviti a:
Commenti sul post (Atom)
La parte valida è quella della funzione OnMouseMove, che è la chiave di tutto. Le funzioni sotto sono state costruite ieri ma erano per un altro tipo di strategia, è da vedere se si possono adattare, ma credo sia meglio ricostruirle daccapo...
RispondiElimina