Visualizzazione dei risultati da 1 a 10 su 10

Discussione: funzioni - cicli

  1. #1

    funzioni - cicli

    questo è l'esempio:
    www.ac-design.it/prova.html

    questo lo script:


    function allunga(mover, arr, step) {
    arrivo = arr;
    mover.onEnterFrame = function() {
    mover._y = linea1._y;
    mover._height += step;
    mover._height += step;
    if (mover._height>=arrivo) {
    mover._height = arr;
    }
    };
    }
    function accorcia(mover, arr, step) {
    arrivo = arr;
    mover.onEnterFrame = function() {
    mover._y = linea1._y;
    mover._height += step;
    if (mover._height<=arrivo) {
    mover._height = arr;
    }
    };
    }
    sf1.onRollOver = function() {
    allunga(_root.sf1, 360, 10);
    accorcia(_root.sf2, 50, -10);
    accorcia(_root.sf3, 50, -10);

    };
    sf2.onRollOver = function() {
    allunga(_root.sf2, 360, 10);
    accorcia(_root.sf1, 50, -10);
    aaccorcia(_root.sf3, 50, -10);
    };
    sf3.onRollOver = function() {
    allunga(_root.sf3, 360, 10);
    accorcia(_root.sf1, 50, -10);
    accorcia(_root.sf2, 50, -10);
    };


    come potete vedere voi stessi non va...l'idea sarebbe che i due movimenti siano entrambi fluidi
    invece viene letto soltanto la seconda funzione (accorcia) (il movimento allunga non è fluido)

    se cambio l'ordine di richiamo delle funzioni e metto prima accorcia e poi allunga

    sf3.onRollOver = function() {
    accorcia(_root.sf1, 50, -10);
    accorcia(_root.sf2, 50, -10);
    allunga(_root.sf3, 360, 10);
    };
    avrò che legge la funzione allunga e non la funzione accorcia

    a) cosa sto combinando
    b) qualcuno ha un esempio pratico su cui esercitarmi
    c) quando sara il momento di accorciare la funzione che ciclo uso?

    ciao ciao
    e grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    306
    un onEnterFrame sovrascrive l'altro, prova a usare il setInterval
    buonuomo.tomma@tiscali.it

  3. #3
    uhm...
    :_(
    cos'è?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    306
    un altro modo di creare dei cicli: una funzione viene eseguita ogni tot millisecondi, compatibilmente con il framerate del filmato
    var ciclo1
    ciclo1 = setInterval(funzione(), intervallo in millisecondi)
    e si cancella l'intervallo con
    clearInterval(id dell'intervallo)
    dove l'id sarebbe la variabile in cui è memorizzato l'intervallo, in questo caso ciclo1
    buonuomo.tomma@tiscali.it

  5. #5
    sei molto gentile..
    il problema pratico è che non so cosa farmene...
    aiutoooooooooooo
    :_)
    dove le metto?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    306
    mmm, mi mandi il fla che provo a modificare direttamente quello?
    buonuomo.tomma@tiscali.it

  7. #7
    fatto...
    ho mandato il fla a
    buonuomo.tomma@tiscali.it

    grazie ... se un giorno capirò qualcosa di as lo dovrò anche a te

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    306
    è ufficiale, la fretta è cattiva consigliera...
    il problema in effetti era dato dal fatto che qualcosa si sovrascriveva, ma non erano gli onEnterFrame, bensì le variabili arrivo, infatti entrambe le funzioni utilizzavano variabili chiamate arrivo che stavano sul _level0 (il loro percorso era _level0.arrivo), e l'ultima che veniva impostata cancellava le altre!
    è bastato un piccolo accorgimento, mettere ciascuna variabile all'interno del relativo movieClip
    di seguito il codice corretto
    codice:
    function allunga(mover, arr, step) {
    	mover.arrivo = arr;
    	mover.onEnterFrame = function() {
    		mover._y = linea1._y;
    		mover._height += step;
    		mover._height += step;
    		if (mover._height>=mover.arrivo) {
    			mover._height = arr;
    		}
    	};
    }
    function accorcia(mover, arr1, step) {
    	mover.arrivo = arr1;
    	mover.onEnterFrame = function() {
    		mover._y = linea1._y;
    		mover._height += step;
    		if (mover._height<=mover.arrivo) {
    			mover._height = arr1;
    		}
    	};
    }
    sf1.onRollOver = function() {	
    	accorcia(_root.sf2, 50, -10);
    	accorcia(_root.sf3, 50, -10);
    	allunga(_root.sf1, 360, 10);
    	
    };
    sf2.onRollOver = function() {
    	accorcia(_root.sf3, 50, -10);
    	allunga(_root.sf2, 360, 10);
    	accorcia(_root.sf1, 50, -10);
    };
    sf3.onRollOver = function() {
    	accorcia(_root.sf2, 50, -10);	
    	allunga(_root.sf3, 360, 10);
    	accorcia(_root.sf1, 50, -10);
    	
    };
    p.s.: lo posto qui invece di mandarti la mail per far sì che la discussione sul forum abbia un inizio e una fine
    buonuomo.tomma@tiscali.it

  9. #9
    mitico----
    ero sicuro che avresti risposto....
    io nel frattempo ho trovato un'altra soluzione

    function allunga(mover, arr, step) {
    arrivo = arr;
    mover.onEnterFrame = function() {
    mover._height += step;
    if (mover._height>=arrivo) {
    delete mover.onEnterFrame;}
    };
    }
    function accorcia(mover, arr, step) {
    mover.onEnterFrame = function() {
    if(mover._height != 50){
    mover._height += step;
    }
    };
    }
    sf1.onRollOver = function() {
    allunga(_root.sf1, 360, 10);
    accorcia(_root.sf2, 50, -10);
    accorcia(_root.sf3, 50, -10);

    };
    sf2.onRollOver = function() {
    allunga(_root.sf2, 360, 10);
    accorcia(_root.sf1, 50, -10);
    accorcia(_root.sf3, 50, -10);
    };
    sf3.onRollOver = function() {
    allunga(_root.sf3, 360, 10);
    accorcia(_root.sf1, 50, -10);
    accorcia(_root.sf2, 50, -10);
    };



    grazie mille a buon rendere

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    306
    di nulla ciao
    buonuomo.tomma@tiscali.it

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.