PDA

View Full Version : HTML&JavaScript


niciz
01-04-2010, 09:27
Ciao a tutti, stò cercando di fare una semplice pagina web che scorra le immagini in modo sequenziale; in oltre però vorrei che al cambo di immagini ci sia un effetto e in questo caso dovrebbe essere una dissolvenza, il problema è che non riesco, secondo voi cosa sbaglio?

<script type="text/javascript">
var i=parseInt(1); //indice immagini
var play=false; //variabile bool sul bottone play/stop slideshow
var temp;

//controllo se play/stop
function slideshow()
{ play=!play;
if(play)
sequenza();
}
//funzione sequenza temporale
function sequenza()
{ if(play)
{ document.images[0].style.MozOpacity = 1;
temp=1;
scompare();
document.immagine.src="immagine"+i+".jpg";
temp=9;
appare();
}
}

function cambia()
{ i++;
if(i==4) //4 Max
i=0;
document.images[0].style.MozOpacity = 1;
setTimeout("sequenza()",2000);
}

function appare()
{ if(temp<10)
{ var x="."+temp;
document.images[0].style.MozOpacity = x;
temp++;
setTimeout("scompare()",500);
}
else
cambia();
}

function scompare()
{ if(temp>0)
{ var x="."+temp;
document.images[0].style.MozOpacity = x;
temp--;
setTimeout("appare()",500);
}
else
cambia();
}

lupoxxx87
01-04-2010, 10:05
non riesci....a fare cosa ?

niciz
01-04-2010, 11:16
non riesce a fare la dissolvenza, e non riesco a capire cosa ci sia di sbagliato nel codice

lupoxxx87
01-04-2010, 12:35
sei sicuro del funzionamento di questo assegnamento ?

var x="."+temp;

comunque...leggendo il codice...
non mi sembri un buon programmatore...
ci sono degli "errori" sintattici che mi lasciano a bocca aperta..tipo


play = !play

if (i==4)
i==0

sei sicuro di sapere cosa stai facendo ?
personalmente ti consiglierei di leggere un buon manuale di C

niciz
01-04-2010, 13:34
ogni nuova variabile come x in quel caso viene considerata una stringa e quindi posso fare quel tipo di assegnamento! ho anche rovato a verificarne la correttezza con degli alert quindi sono sicuro che funzioni.

per quanto riguarda play è una variabile bool e in quanto nel body ho un pulsante "play/stop" ogni volta che viene premuto devo cambiarne il valore.
per cominciare o terminare lo slideshow.

if(i==4)
i=0;
questo lo faccio perchè ho 4 immagini e siccome ogni volt che faccio partire la funzione incremento i, quando i arriva a 4 lo azzero.
non ci trovo niente di strano

vladix
01-04-2010, 13:51
Ciao , se non vuoi complicarti troppo la vita usa il slideshow di dojo (http://docs.dojocampus.org/dojox/image/SlideShow)


personalmente ti consiglierei di leggere un buon manuale di C
:spam:

cionci
01-04-2010, 15:06
sei sicuro del funzionamento di questo assegnamento ?
Perché

play = !play;

sarebbe un errore ?

lupoxxx87
01-04-2010, 15:50
Perché

play = !play;

sarebbe un errore ?

magari l'assegnamento javascript vuole che sia 0.123213213 e non solo .12312123

e magari poteva esserci qualche errore concettuale di progettazione visto che definisce
var play=false
poi ne cambia il valore, dopo di chè fa numerose valutazioni su quel booleano..

era solo un suggerimento...
visto che sto lavorando su un progetto in puredata...carissimo linguaggio per cui 1.0 && 1.00 = 0

cionci
01-04-2010, 16:57
Non ho capito la prima parte riguardante lo 0.xxx e .xxx...

Mi sembra l'uso normale quando devo cambiare stato ad una variabile booleana indipendentemente dal suo valore. La nega e l'assegna a se stessa invece di scrivere:

if(play == false)
play = true;
else
play = false;
Semplicemente slideshow() attiva e disattiva la riproduzione.

lupoxxx87
01-04-2010, 17:24
vabbè...sarà che non conosco molto javascript... ma a logica mi vien da pensare che un codice così generi più istanze di sequenza() ogni volta che si clicca su play...comunque, bando alle ciance :p

seguendo la sequenza del programma mi pare di notare che..

slideshow()
| play = true
| sequenza()
| | temp = 1
| | scompare()
| | | x = .1
| | | temp = 0
| | | appare()
| | | | x = .0
| | | | temp = 1
| | | | scompare()

quindi il programma dovrebbe entrare in un ciclo senza fare nulla di particolare...
credo ci sia la necessità di mettere dei cicli all'interno di appare e scompare....