Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <html>
- <head>
- <title>Animazione Palline</title>
- <meta name="author" content="Christian Marongiu" />
- <script type="text/javascript">
- /*
- ##################################################################
- ## SCRIPT BY: Christian Marongiu ##
- ## INFO: http://chrmar.altervista.org ##
- ## CONTACT: christianmarongiu93@gmail.com ##
- ## DATA: 10th May 2012 - 18.35 ##
- ## ##
- ## Pagina HTML/JavaScript per generare delle palline ##
- ## in movimento con numero di palline richiesto ##
- ## ##
- ## Fonte parziale: R.Nikolassy - JavaScript Edizioni Hoepli ##
- ## Script riadattato e rielaborato con modifiche ##
- ##################################################################
- */
- // Numero palline richiesto all'utente
- var palline = prompt("Inserisci numero di palline: (da 1 a 8)");
- // Velocità di animazione
- var speed = 20;
- // Array globali per la posizione dell'elemento (pallina) in verticale (Y)
- // e orizzontale (X) e la direzione del movimento (X e Y)
- var xpos = new Array();
- var ypos = new Array();
- var xdir = new Array();
- var ydir = new Array();
- // La funzione che calcola la nuova posizione della
- // pallina contando direzione e posizione precedenti
- // riceve il parametro NUM che è l'indice delle
- // immagini images[] ed indica quale pallina da spostare
- // images[] risulta da document.images
- // che indica quanti tag IMG ci sono nel documento
- // esempio inserendo 4 palline avremo 4 IMG
- function calcolaPosizione(num) {
- // Controllo direzione orizzontale
- // Se xdir è false significa che la direz. oriz. e' a Destra
- if(!xdir[num]) {
- // Controllo se la posizione è a fine margine finestra destra
- if(xpos[num] > (document.body.clientWidth-speed-30)) {
- // Se e' a fine margine destra, cambio direzione
- xdir[num] = true; // Quindi lo rendo true cosi' la direz. oriz. e' a Sinistra
- }
- }
- else {
- // E' true quindi sta andando a sinistra, controllo se è a fine margine finestra sinistra
- if(xpos[num] < speed) {
- // Se e' a fine margine sinistra, cambio direzione
- xdir[num] = false; // Lo metto a false cosi' va a destra
- }
- }
- // Controllo direzione verticale
- // Se direz. verticale è false significa che va giu'
- if(!ydir[num]) {
- // Controllo se posizione è a fine margine finestra in basso
- if(ypos[num]>document.body.clientHeight-speed-20) {
- // Se e' a fine margine basso, cambio direzione
- ydir[num]=true; // Lo metto a true cosi' va verso l'alto
- }
- }
- else {
- // Se direz vertic. e' true significa che va in su
- // quindi controllo
- if(ypos[num]<speed) {
- // se è a fine margine finestra in alto
- ydir[num]=false; // Lo metto a false cosi' va verso il basso
- }
- }
- // Aggiornamento nuova posizione
- // Se direzione orizzontale è false va a destra
- if(!xdir[num]) xpos[num] = parseInt(document.images[num].style.left)+speed;
- // Altrimenti va a sinistra
- else xpos[num] = parseInt(document.images[num].style.left)-speed;
- // Se direzione verticale è true va in su
- if(ydir[num]) ypos[num]=parseInt(document.images[num].style.top)-speed;
- // Altrimenti va in giu
- else ypos[num]=parseInt(document.images[num].style.top)+speed;
- }
- // Funzione che calcola la nuova posizione e sposta le palline
- // Agendo sulle proprietà style.left e style.top
- function move() {
- for(var x=0;x<palline;x++) {
- // Chiamata della funzione che calcola la posizione
- // dell'elemento inviato come parametro (x) che non è
- // altro che la pallina
- calcolaPosizione(x);
- // Calcola posizione ha aggiornato il vettore di posizione
- // che viene associato alla proprietà di posizione verticale (top)
- // ed orizzontale dell'elemento
- document.images[x].style.left=xpos[x];
- document.images[x].style.top=ypos[x];
- }
- // Attivazione del timer che ogni 50millisec sposta di nuovo le palline
- // richiamando questa funzione
- timer = window.setTimeout("move();",50);
- }
- // Funzione attivata all'apertura della pagina
- function start() {
- // Se inserisco un numero di palline minore di 1 o maggiore di 8
- if(palline < 1 || palline > 8) {
- document.write("Errore - Numero di palline possibili: da 1 ad 8 - Aggiorna la pagina.");
- return false;
- }
- // Col prompt la risposta creata diventa una stringa
- // quindi il numero di palline mi risulta una stringa
- // per questo adotto questo metodo per poter verificare
- // se sono stati inseriti valori che non siano un numero tra 1 e 8
- // ad esempio se l'utente inserisce una lettera
- if(palline != 1 &&
- palline != 2 &&
- palline != 3 &&
- palline != 4 &&
- palline != 5 &&
- palline != 6 &&
- palline != 7 &&
- palline != 8) {
- document.write("Errore - Valori ammissibili: Numeri da 1 a 8 - Aggiorna la pagina");
- return false;
- }
- // Ciclo che per il totale delle palline
- for(var x=0;x<palline;x++) {
- // Creo un numero di immagini pari al numero di palline richieste
- var newImage = document.createElement('img');
- newImage.setAttribute("src","palla"+x+".png");
- newImage.setAttribute("style", "position:absolute; top:"+x+"00; left:"+x+"50;");
- document.body.appendChild(newImage);
- dir_oriz=[true,false];
- dir_vert=[true,false];
- // Aggiorna array di posizione con la posizione attuale
- xpos[x] = parseInt(document.images[x].style.left);
- ypos[x] = parseInt(document.images[x].style.top);
- // Scelta della direzione iniziale casuale
- // True va a sinistra, false va verso destra
- xdir[x] = dir_oriz[Math.round(Math.random())];
- // True va su, false va giu
- ydir[x] = dir_vert[Math.round(Math.random())];
- } // End for
- // Chiamata funzione che attiva il movimento
- move();
- }
- </script>
- </head>
- <body onLoad="start()" bgcolor="#FFFFFF" style="overflow:hidden">
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement