Newsgroup: it.comp.lang.javascript
Titolo: immagine a livello inferiore che gira "random" Si puo?

Ciao  a tutti
Secondo voi si può fare una cosa di questo tipo :
Io mi costruisco un immagine di un colore unico e ci faccio dei disegni con
colore "trasparente"
 (poi salvo in formato .gif 89a) , poi gli vorrei schiaffare sotto una
immagine molto più piccola, diciamo un quadratino o un cerchietto di colore
diciamo rosso e gli assegno la proprietà di girare
"Random cazzeggiante" sotto alla prima così da dare l'effetto che il colore
trasparente si colori all'improvviso e senza una sequenza logica.
Lo so che con flash si può fare ma mi chiedevo se anche JavaScript  ( o
magari  semplicemente DHTML o html ) ce la fa a farmela farcela.
Io mi sono fatto una gif che vorrebbe assomigliare ad una riproduzione
schematica di un circuito elettronico e volevo vedere se riuscivo a dargli
un'aspetto + fantasmagorico....magari due o più pallini colorati che girano
mentre le tracce ed i simboli li "tiro" trasparenti.
Spero di non averVi fatto girare i pallini...
Grazie
Marco

 wrote in message
news:90jrv2$o8n$1...@lacerta.tiscalinet.it...


Ciao Paolo e grazie
Ma la gif animata esegue un loop !
Io la vorrei Imprevedibilmente Cazzeggiante è possibile ?
Il peso di una gif animata non sarebbe poi superiore a quello delle righe di
script?
( tra l'altro ho problemi a fare le immagini sovrapposte con NN, stasera
provo con <Layer> perchè altrimenti non mi prende le impostazioni di
posizionamento assolute )
Grazie
Marco

 diciamo rosso e gli assegno la proprietà di girare
[]
Certamente. L'esempio allegato non muove il "fantasma" in maniera random
ma con effetto rimbalzo sui lati; l'algoritmo del movimento dipende
dalle tue necessita'.
Saluti, Paolo
<script language="JavaScript">
<!--
function init(){
obj=(document.getElementById)?document.getElementById('circuito'):(docum
ent.all)?document.all['circuito']:document.layers['cont'].document.circu
ito
 maxX= (document.layers)? obj.clip.width:parseInt(obj.style.width);
 maxY= (document.layers)? obj.clip.height:parseInt(obj.style.height);
obj1=(document.getElementById)?document.getElementById('fantasma'):(docu
ment.all)?document.all['fantasma']:document.layers['cont'].document.fant
asma
 if (document.getElementById)obj1.style.top=0;
 if (document.getElementById)obj1.style.left=0;
 muovi();
}
cont=0;
movX=5;
movY=5;
function muovi(){
 posX=(document.layers)? obj1.left:parseInt(obj1.style.left);
 posY=(document.layers)? obj1.top:parseInt(obj1.style.top);
 if(posX+3>=maxX) movX=-5;
 if(posX<=0) movX=5;
 if(posY+3>=maxY) movY=-5;
 if(posY<=0) movY=5;
 (document.layers)?obj1.top=posY+movY:obj1.style.top=posY+movY;
 (document.layers)?obj1.left=posX+movX:obj1.style.left=posX+movX;
 aa=setTimeout('muovi()',500);
 if(cont>=100)clearTimeout(aa); // blocca dopo 100 iterazioni
 cont++;
}
// -->
</script>
</head>
<body bgColor="red" onLoad="init()">
<DIV name="cont" id="cont" STYLE="position:relative;">
<DIV name="fantasma" id="fantasma" STYLE="position:absolute; width:3px;
height:3px"><IMG src=bottone1.gif width=3px; height=3px></DIV>
<DIV name="circuito" id="circuito" STYLE="position:absolute;
width:100px; height:200px"><IMG src=abito.gif width=100px;
height=200px></DIV>
</DIV>
</body>
</html>

Grazie Paolo !!
Ho modificato togliendo il limite delle iterazioni ( lo devo togliere in
questo caso il cont ++ ? ) , abbassando il valore del timeout e dando una
forma a macchie all'immagine bottone.
Perň il tutto ha un comportamento ancora troppo loopeggiante, č piů
prevedibile di mia moglie quando č al telefono con mia suocera ;))
Si puň modificare in qualche modo " pazzo " ? ( che ne so butto a caso....
un angolo che varia quando sbatacchia? ......)
Poi mi succede un fatto strano offline mi mette degli spazi bianchi attorno
all'immagine mentre se faccio l'upload e leggo il file dal web gli spazi non
ci sono piů .
Questo succede con IE5 perchč con NN purtroppo non funziona nulla in ogni
caso :(
devo aver intrallazzato male la faccenda del posizionamento ma non capisco
dove toppo !! )
Grazie ancora , se vuoi vedere in azione il tutto ( ho anche fatto la mappa
dei pulsanti ed ho inserito lo HierMenu in Js...sta venendo ipergalattico
!! )
http://web.tiscalinet.it/valpochess/introduzione.htm
( l'immagine trucco.gif ...quella mappata....č completamente trasparente )
Ciao
Marco


 dove toppo !! )
[]
La chiusura del DIV principale deve essere spostata prima della mappa .
Inoltre l'immagine mappata crea problemi. Perche' non mappi direttamente
elettroblu?
Cosi' funziona tutto correttamente:
----------------
<body onLoad="init()" leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0">
<DIV id=cont style="POSITION: relative;top:0;left:0" name="cont">
 <DIV id=fantasma style="HEIGHT: 50px; POSITION: absolute; WIDTH: 50px"
name="fantasma">
 <IMG height=50 src="bottone1.gif" width=50></DIV>
 <DIV id=circuito style="HEIGHT: 800px; POSITION: absolute; WIDTH:
160px; top:0;left:0" name="circuito">
  <IMG height=800 src="elettroblu.gif" width=160 useMap=#truccogif
border=0></DIV>
 <DIV style="HEIGHT: 81px; POSITION: absolute; TOP: 0px" name="logo">
  <IMG height=81 src="fsi.gif" width=73></DIV>
</DIV>
<map name="truccogif">
<area shape="rect" coords="106,193,159,217" title="Menu" href="#"
onMouseOver="popUp('elMenu1',event)" onMouseOut="popDown('elMenu1')">
<area shape="rect" coords="106,257,159,281" title="Stampa" href="#"
onclick="parent.main.focus();parent.main.print()">
<area shape="rect" coords="106,317,159,341" title="Esci" href="#"
onclick="javascript:parent.self.close()">
</map>
<BR>
<p>
Sappimi dire.
Saluti, Paolo

Paolo è fantastico !!
Sembra flash !
Siccome in attesa che carichi lo Hiermenu l'immagine sta ferma qualche
secondo, ho pensato di mettere la partenza  dietro il logo ( che ho spostato
in alto a destra ) e credevo di aver individuato la definizione del punto di
partenza nel punto seguente...ma non è così ...: io ho messo top 0 left
110...
obj1=(document.getElementById)?document.getElementById('fantasma'):(document
.all)?document.all['fantasma']:document.layers['cont'].document.fantasma
 if (document.getElementById)obj1.style.top=0;
 if (document.getElementById)obj1.style.left=110;
 muovi();
}
C'è poi una ultima cosa di cui credo di aver individuato il motivo ma che ho
provato a risolvere senza riuscirci.
Lo Hiermenu utilizza una onload ( definita in un file .js esterno ) per
inizializzare tutto l'ambaradan, ......la chiama startIt :
loader = (isFrames) ? (NS4) ? parent : parent.document.body : window;
loader.onload = startIt;
if(NS4){
 origWidth = loader.innerWidth;
 origHeight = loader.innerHeight;
 loader.onresize = reDo;
}
isLoaded = false;
NSresized = false;
............................................................................
...................
function startIt() {
 isLoaded = true;
 if (isFrames) {
  menuLoc = eval("parent.frames." + mainFrName);
  if (NS4) {
   loader.captureEvents(Event.LOAD);
   loader.onload = NSloaded;
   menuLoc.onunload = NSunloaded;
  }
  if (IE4) {
   menuLoc.document.body.onunload = IEunloaded;
  }
 }
 else {
  menuLoc = window;
 }
 menuLoc.nav = nav = window;
 if (clickKill) {
  if (NS4) menuLoc.document.captureEvents(Event.MOUSEDOWN);
  menuLoc.document.onmousedown = clicked;
 }
 makeTop();
}
............................................................................
....................................
un bell'inghippo è però dato dal fatto che anche in molte delle pagine che
uso io con le partite di scacchi utilizzano una chiamata onload nel tag
body...
<body ONLOAD="initall()">
function initall(){
 initdia();
 init();}
Chiamata che a sua volta serve per dare un ordine temporale al caricamento
della scacchiera e dei pezzi ?? mi pare di aver capito cosi....
con IE tutto bene, mi tira su sia il menu che la scacchiera ed i pezzi, ma
con NN vedo le scacchiere ma i pezzi me li scordo..
Secondo te se io modifico il file esterno.js che usa Hiermenu in particolare
nella funzione starIt aggiungendo initall() ...( però non so in che punto,
all'inizio ? e con delle condizioni ? ) poi quando uso Hiermenu in pagine
che non utilizzano initall()....non dovrebbe essere un problema !!
Capisco che mi sono espresso da mentecatto ancora una volta ma sono gasato
che mi sta venendo così bene ...che ora vorrei farlo andare anche col NN !!!
Ciao e grazie.
Marco


[]

Il menu gerarchico, come avrai notato, viene creato nella pagina
principale; questo e' il motivo per cui si ricrea ogni volta.
Se blocca altri script, in alcune pagine, puo' dipendere da interferenze
tra i Timeout ??; per verificarlo e' necessario indicare le pagine
incriminate.
Comunque, per attivare nuovi script dopo che il menu' e' stato caricato,
dovresti chiamarli alla fine della funzione *makeTop()*; se ho
interpretato bene il codice.
Saluti, Paolo