Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: Maledetto ciclo "for"

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    66

    Maledetto ciclo "for"

    Ciao a tutti, ho un problema complesso (almeno per me), la cui soluzione però credo possa far comodo a tanti, per cui vi chiedo una mano!

    allora, partiamo dallo script
    import mx.transitions.Tween;
    import mx.transitions.easing.*;
    prova = new function () {
    }();
    mio_xml = new XML();
    mio_xml.path = this;
    mio_xml.ignoreWhite = true;
    mio_xml.onLoad = function(success) {
    if (success) {
    var nodes = this.firstChild.childNodes;
    _root.avvisotitoli.titolo = "";
    titoli = new Array();
    intervalli = new Array();
    testi = new Array();
    for (var n = 0; n<nodes.length; n++) {
    var titolo = this.firstChild.childNodes[n].attributes.titolo;
    var intervallo = this.firstChild.childNodes[n].attributes.intervallo;
    var testo = this.firstChild.childNodes[n].nodeValue;
    _root.avvisotitoli.titolo.height = 20*n;
    _root.avvisotitoli.titolo += "Titolo: "+titolo+"
    ";
    titoli[n] = titolo;
    intervalli[n] = intervallo;
    testi[n] = testo;
    }
    } else {
    _root.avvisotitoli.titolo = "Caricamento errato";
    }
    var down = 0;
    var t = 1000;
    for (var d = 0; d<intervalli.length; d++) {
    IntervalID = setInterval(controllo, t);
    function controllo() {
    new Tween(avvisotitoli, "_y", mx.transitions.easing.Elastic.easeOut, 0+down, 20+down, 2, true);
    clearInterval(IntervalID);
    down = down+40;
    t = intervalli[d];
    _root.avvisotesto.testo = testi[d];
    }
    }
    };
    mio_xml.load("avvisi.xml");
    se date un'occhiata al secondo ciclo for, vedete che il mio intento è quello di far muovere la clip avvisotitoli ad intervalli NON regolari, ma di volta in volta pescati dall'xml "avvisi".
    Questo perchè voglio far apparire le news tanto più a lungo quanto più sono lunghe...
    In realtà tutto rimane fermo..
    Qual è il problema: che il ciclo for si esaurisce subito, e non fa in tempo a passare i valori di d alla funzione controllo? Oppure che la funzione controllo non può stare dentro al ciclo for? C'è qualcuno che ha voglia di risolvere l'arcano? Magari se lo script funziona lo potremmo inserire tra i movie di html.it..
    Grazie in anticipo!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    66
    Proprio nessuno che mi aiuta? Per favore...

  3. #3
    ma adesso cosa succede?

    se metti qualche trace nn riesci a vedere cosa nn passa o dove nn entra?

    il clclo for si esaurirà subito quindi dovresti vedere se fa tutte le chiamate della funzione controllo oi prova a mettere solo la chiamata della funzione nel ciclo nn l'intera funzione....


    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    66
    il trace lo messo tra le graffe della funzione, ma non printa nulla...

    è come se dentro un ciclo for non potesse essere eseguita una funzione..nemmeno il setinterval funzia...

    boh, io non è che ci sto capendo molto..

    vi prego, aiutatemi!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    66
    guarda questo crescenzo, veramente interessante: sai cosa fa?mi prina "d" volte la frase "Dove mi blocco", ma oltre quello non va!!! che spettacolo!!! Aiutatemiiiiiiiiii

    Codice PHP:
    import mx.transitions.Tween;
    import mx.transitions.easing.*;
    function 
    controllo() {
        
    trace("Dove mi blocco");
        
    IntervalID setInterval(controllot);
        new 
    Tween(avvisotitoli"_y"mx.transitions.easing.Elastic.easeOut0+down20+down2true);
        
    clearInterval(IntervalID);
        
    down down+40;
        
    intervalli[d];
        
    _root.avvisotesto.testo testi[d];
    }
    mio_xml = new XML();
    mio_xml.path this;
    mio_xml.ignoreWhite true;
    mio_xml.onLoad = function(success) {
        if (
    success) {
            var 
    nodes this.firstChild.childNodes;
            
    _root.avvisotitoli.titolo "";
            
    titoli = new Array();
            
    intervalli = new Array();
            
    testi = new Array();
            for (var 
    0n<nodes.lengthn++) {
                var 
    titolo this.firstChild.childNodes[n].attributes.titolo;
                var 
    intervallo this.firstChild.childNodes[n].attributes.intervallo;
                var 
    testo this.firstChild.childNodes[n].nodeValue;
                
    _root.avvisotitoli.titolo.height 20*n;
                
    _root.avvisotitoli.titolo += "Titolo: "+titolo+"
    "
    ;
                
    titoli[n] = titolo;
                
    intervalli[n] = intervallo;
                
    testi[n] = testo;
            }
        } else {
            
    _root.avvisotitoli.titolo "Caricamento errato";
        }
        var 
    down 0;
        var 
    0;
        for (var 
    0d<intervalli.lengthd++) {
            
            
    controllo();
            
        }
    };
    mio_xml.load("avvisi.xml"); 

  6. #6
    prova a stampare t nella funzine controllo
    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    66
    ovviamente mi da un bel "undefined"...certo, avendo spostato la funzione ad inizio script, non gli ho ancora passato il valore di t...

    mi sa che ho intuito dove volevi arrivare, per cui ho riscritto il codice come segue..Sai cosa succede?mi esegue il tween una sola volta, poi non ripete..(beh, almeno fa qualcosa)



    Codice PHP:
    import mx.transitions.Tween;
    import mx.transitions.easing.*;

    mio_xml = new XML();
    mio_xml.path this;
    mio_xml.ignoreWhite true;
    mio_xml.onLoad = function(success) {
        if (
    success) {
            var 
    nodes this.firstChild.childNodes;
            
    _root.avvisotitoli.titolo "";
            
    titoli = new Array();
            
    intervalli = new Array();
            
    testi = new Array();
            for (var 
    0n<nodes.lengthn++) {
                var 
    titolo this.firstChild.childNodes[n].attributes.titolo;
                var 
    intervallo this.firstChild.childNodes[n].attributes.intervallo;
                var 
    testo this.firstChild.childNodes[n].nodeValue;
                
    _root.avvisotitoli.titolo.height 20*n;
                
    _root.avvisotitoli.titolo += "Titolo: "+titolo+"
    "
    ;
                
    titoli[n] = titolo;
                
    intervalli[n] = intervallo;
                
    testi[n] = testo;
            }
        } else {
            
    _root.avvisotitoli.titolo "Caricamento errato";
        }
        function 
    controllo() {
        
    trace("Dove mi blocco");
        
    IntervalID setInterval(controllot);
        new 
    Tween(avvisotitoli"_y"mx.transitions.easing.Elastic.easeOut0+down20+down2true);
        
    clearInterval(IntervalID);
        
    down down+40;
        
    intervalli[d];
        
    trace(t);
        
    _root.avvisotesto.testo testi[d];
    }
        var 
    down 0;
        var 
    0;
        for (var 
    0d<intervalli.lengthd++) {
            
            
    controllo();
            
        }
    };
    mio_xml.load("avvisi.xml"); 

  8. #8
    se invece fai una cosa del genere x funzione controllo..... la stanchezza si fa sentire

    down=0;
    contatore = 0;
    function controllo(t) {
    new Tween(avvisotitoli, "_y", mx.transitions.easing.Elastic.easeOut, 0+down, 20+down, 2, true);

    down = down+40;
    if (contatore == titoli.length) {
    clearInterval(intv);
    trace("canc")
    }
    contatore++;

    }
    intv = setInterval(controllo, t);

    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    66
    boh, mi sa che è la stanchezza... qui continua a fare un ciclo e poi si ferma..ma come, a me avevano insegnato che finchè non scrivi stop(); va sempre tutto in loop..

    come si fa Crescenzo, a me iniziano ad intrecciarsi le graffe e tutto il resto..se invece di setinterval ci costruissimo un timer? VVoVe:

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    66
    Crescenzo, ti do la buona notte così:

    Codice PHP:
    down 0;
        
    contatore 0;
        function 
    controllo(t) {
            new 
    Tween(avvisotitoli"_y"mx.transitions.easing.Elastic.easeOut0+down20+down2true);
            
    down down+40;
            if (
    contatore == titoli.length) {
                
    clearInterval(intv);
                
    trace("canc");
                
    trace(contatore);
            } else {
                
    trace("contatore");
                
    trace(t);
            
    contatore++;
            }
            
        }
        
    intv setInterval(controllot);
        for (var 
    0d<intervalli.lengthd++) {
            
    intervalli[d];
            
    controllo(t);
        } 
    il tween viene eseguito una sola volta, poi tutto si ferma..
    in compenso il trace mi restituisce quanto segue:
    Codice PHP:
    contatore
    3
    contatore
    2
    contatore
    2
    contatore

    Speriamo che la notte porti consiglio...


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 © 2026 vBulletin Solutions, Inc. All rights reserved.