Newsgroup: it.comp.lang.javascript
Titolo: Sfumare una img

Premesso che non sono un virtuoso del javascript e che in effetti lo conosco
pochissimo, questa mattina ho buttato giù qualche riga per creare una
funzioncina che mi sfumasse una immagine. Questo è quanto ho scritto:
  <script language="JavaScript">
    function makeVisible(cur, opacity){
      while (opacity < 100) {
        opacity = opacity + 1
        cur.filters.alpha.opacity = opacity
      }
    }
  </script>
Sicuramente ce ne saranno diversi di modi per fare quello che voglio io,
questo è sicuramente uno dei più veloci e bovini.
In pratica, considerando che chiamo questa funzione passando un valore per
l'opacità pari a 0, il ciclo farà in modo di incrementare il valore della
mia variabile locale opacity e di conseguenza appalicare questo valore al
filtro apllicato sull'immagine.
Diciamo che inserendo questo codice in una pagina html qualcosa succede ma,
non esattamente quello che mi aspetto. In paratica, o il ciclo scorre troppo
velocemente o non viene refreshato il filtro sull'immagine perchè invece che
vedere l'img diventare gradualmente più nitida la vedo da chiara (come la
setto inizialmente) a scura.
Che questa cosa possa avvenire in tempi brevi può anche starmi bene ma...io
non noto nessuna gradualità.
Idee...suggerimenti?!?!
Grazie, saluti...
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Idee...suggerimenti?!?!
Credo ti convenga usare setInterval o setTimeout. Molto rozzamente, prova
una cosa del genere (la scrivo al volo e non sono certo un esperto, quindi
vedi se funziona!):
  <script language="JavaScript">
    var opacity=0;
    var cur=...l'oggetto che vuoi tu...;
    function makeVisible(){
        cur.filters.alpha.opacity = ++opacity;
        if (opacity<100) setTimeout(makeVisible,200)
        else opacity=0;
      }
    }
  </script>
Non e' un gran che', ma forse funziona. Solo in explorer, pero'
(filters.alpha e' proprietario di explorer).
-- 
~Nando~ :-/__.oO
Apostolo della Prova

         if (opacity<100) setTimeout(makeVisible,200)
a naso direi che cosě non va...setTimeout("makeVisible()",200);
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

<script language="JavaScript">
  var t1;
    function makeVisible(cur, opacity){
     if (opacity < 100) {
        opacity = opacity + 1;
        cur.filters.alpha.opacity = opacity;
      }
     else
      window.clearInterval(t1);   //Fermi la diminuzione
dell'opacità
    }
   t1=window.setInterval("makeVisible(Quello che ci va qui quando la
chiami)",500);
 </script>
ogni mezzo secondo chiama la funzione..
io di solito per l'opacità uso
document.getElementById('ELEMENTO').style.opacity=qualcosa;
il tuo metodo non l'ho mai usato, ma se funziona, ben venga...
CIAO
skunk ha scritto:


 document.getElementById('ELEMENTO').style.opacity=qualcosa;
uhm ... sicuro? ricordo che è stato inserito con css3, funziona con quali
browser?
Per IE uso un qualcosa del tipo
...style.filter="alpha(opacity=20,style=0)";
Per Gecko esiste la -moz-opacity (per css è -moz-opacity:0.2)
opacity:0.2 lo ho inserito nei css per futuro supporto css3...funziona con
le ultime versioni Gecko-based? (non penso funzioni con IE...)
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 esperto, quindi vedi se funziona!):
Mi da un errore ma...potrei anche aver scritto qualche fessta io.
Ad esempio, la riga:
var cur=...l'oggetto che vuoi tu...;
con che la sostituisco? Suppongo che quella dovrebbe essere la mia immagine.
La mia funzione, per fare delle prove, la richiamavo mediante onMouseover
sull'img che volevo sfumare. Con questa riga:
<IMG SRC="xxx.jpg" style="filter:alpha(opacity=0)"
onMouseover="makeVisible(this, 0)">
rendevo inizialmente l'immagine molto chiara e poi quando ci passavo il
mouse sopra avrei voluto che si scurisse. In realtà la chiamata alla mia
funzione andrebbe messa nel body della mia pagina html così che il tutto sia
automaticamente visibile all'apertuta della stessa.
Come assegno a var la mia img?
