Visualizzazione dei risultati da 1 a 3 su 3

Discussione: oggetto per animazioni

  1. #1
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130

    oggetto per animazioni

    date un occhio al seguente script:

    codice:
    <html>
    <head>
    <title>Documento senza titolo</title>
    </head>
    
    <body>
    
    <div id="x" style="background: #D4FFAA; width: 200px; line-height: 100px;">ciao mondo!</div>
    
    <script type="text/javascript">
    
    function anima(DOMtarget, css_pr, css_start, css_end, css_scale){
    	
    	// alert("chiamata al costruttore")
    	
    	// attributi privati dell'oggetto
    	// dopo la creazione dell'oggetto rimangono disponibili per i metodi
    	var DOMtarget = document.getElementById(DOMtarget);
    	var css_PR = css_pr;
    	var css_START = css_start;
    	var css_END = css_end;
    	var css_SCALE = css_scale;
    	
    	// costanti a cui trovare collocazione e per ora settati "a mano" in questa zona 
     	var step = 1;
    	var growth = 20;
    	var iterate = null;
    	
    	fx = function(){
    		// alert("fx");
    		// prima esecuzione di fx - non ci sono stili css impostati via js
    		if(step == 1){
    			DOMtarget['style'][css_PR] = (step * growth) + css_SCALE;
    			step++;
    		}
    	
    		// this is the end ... my only friend the end ...
    		else if(DOMtarget['style'][css_PR] == css_END + css_SCALE){
    			window.clearInterval(iterate);
    			document.title = "THE-END";
    			return;
    		}
    		
    		// on the way there ...	
    		else{
    			DOMtarget['style'][css_PR] = (step * growth) + css_SCALE;
    			step++;
    		}
    	} 
    	
    	this.start = function(){
    		// alert("start");	
    		iterate = window.setInterval(fx, 100);
    	}
    	
    	this.read = function(){
    		alert(css_PR);
    	} 
    } 
    
    // instanzio oggetto di prova 
    var prova1 = new anima("x", "paddingTop", "0", "320", "px"); 
    
    var prova2 = new anima("x", "marginLeft", "0", "320", "px"); 
    
    
    </script>
    
    start oggetto effetto 1
    
    
    start oggetto effetto 2
    
    <hr />
    
    read css property oggetto effetto 1
    
    
    read css property oggetto effetto 2
    
    </body>
    </html>
    l'oggetto "anima" serve a creare animazioni personalizzate secondo i parametri che gli vengono passati in fase di creazione. questi vengono salvati in variabili private (le prime 5 variabili dell'oggetto). il metodo start() si prende poi cura di lanciare reiterativamente il metodo privato fx che cambia la poroprietà css che si è scelto in fase di istanziazione dell'oggetto. il metodo read() serve invece a leggere la variabile privata css_PR relativa al nome della proprietà css in questione (ha solo funzione di debug e non ha nessuna funzione relativa all'animazione).

    come vedete ho istanziato 2 oggetti "anima": uno che dovrebbe modificare il padding-top e uno che dovrebbe modificare il margin-left. il problema è che entrambi i metodi modificano il margin-left. come se la viariabile privata css_PR venisse sovrascritta quando viene istanziato il secondo oggetto. però se provate a lanciare il metodo read in relazione ai 2 oggetti (vedi seconda coppia di link) noterete che entrambe le variabili contengono la proprietà css che si era scelto all'inizio per i 2 oggetti. sembra insomma che fx() non usi la relativa variabile privata ma qualche altra copia che, aimè, è stata sovrascritta. boh!?!?!?!

  2. #2
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130
    dai raga sforzatevi un'attimo. vi metto il codice online così non dovete neanche sforzarvia a a fare copia e incolla. ecco il link: http://survey123.altervista.org

  3. #3
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130
    ok mi rispondo da solo:

    la variabile fx (che è una funzione) veniva dichiarata senza l'uso di var. risultato: veniva instaziata non nell'ambito dell'oggetto ma in riferimento alla super classe window. segue la sovrascrizione eseguita da nuove istanze della classe anima!!!!!!!!

    sono troppo scemo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.