Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Problema setInterval

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    37

    Problema setInterval

    ciao a tutti, ho un problema con uno script che carica delle news da un file xml e mi visualizza in un campo di testo, che si trova dentro ad un movieclip, riga per riga con un effetto fadein fadeout usando un setinterval.
    Lo stesso script l'ho inserito in diversi frame del mio filmato e carica sempre file diversi.
    Il problema è che se faccio partire il filmato e vado direttamente a visualizzare le news "con calma", non succede nulla e funziona tutto normalmente, se invece inizio a muovermi a random nel menù e quindi visualizzando la prima pagina contenente lo script1, poi in quella dello script2 e così via, lo script si impasta, come se ci fosse un carico sulla cpu o vada in palla il setinterval.
    come fare?


    codice:
    function loadXML(loaded) {
    	if (loaded) {
    		xmlNode = this.firstChild;
    		caption = [];
    		url = [];
    		total = xmlNode.childNodes.length;
    		for (i=0; i<total; i++) {
    			caption[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
    			url[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
    		}
    		first_item();
    	} else {
    		content = "file not loaded!";
    	}
    }
    xmlData = new XML();
    xmlData.ignoreWhite = true;
    xmlData.onLoad = loadXML;
    xmlData.load("news.xml?blarg="+new Date().getTime());
    //
    function first_item() {
    	delay = 3000;
    	p = 0;
    	display(p);
    	p++;
    }
    function timer() {
    	myInterval = setInterval(ticker, delay);
    	function ticker() {
    		clearInterval(myInterval);
    		if (p == total) {
    			p = 0;
    		}
    		fadeout();
    	}
    }
    function display(pos) {
    	over = new TextFormat();
    	over.underline = false;
    	//
    	out = new TextFormat();
    	out.underline = false;
    	//
    	newsMC.newsText._alpha = 100;
    	newsMC.newsText.text = caption[pos];
    	//newsMC.onRollOver = function() {
    	//this.newsText.setTextFormat(out);
    	//};
    	//newsMC.onRollOut = function() {
    		//this.newsText.setTextFormat(out);
    	//};
    	timer();
    }
    function fadeout() {
    	this.onEnterFrame = function() {
    		if (newsMC.newsText._alpha>=0) {
    			newsMC.newsText._alpha -= 5;
    		} else {
    			display(p);
    			p++;
    			delete this.onEnterFrame;
    		}
    	};
    }
    ringrazio anticipatamente
    ciao!

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    sia il setInterval che gli enterFrame vanno adeguatamente controllati e spenti nel momento in cui non servono più, quindi su tutti i pulsanti del menu dovresti includere per lo meno questa riga di codice: clearInterval(myInterval);

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.