Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Preload immagini

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245

    Preload immagini

    Ciao a tutti,
    ho un filmato che carica un xml, dal quale prendo il path di circa 80 immagini: praticamente è uno slideshow tra queste immagini. Sto cercando di fare un preload per ciascuna di queste immagini, ma nella finestra di output dice che cade in un loop infinito. Qualcunoo mi può aiutare?

    Ciao
    L.

    codice:
    slides_xml = new XML();
    slides_xml.load("slides.xml");
    slides_xml.onLoad = startSlideShow;
    slides_xml.ignoreWhite = true;
    _global.intervallo = 0;
    
    attesa = 2000;  //2 sec
    
    // Show the first slide and intialize variables
    function startSlideShow(success) {
    	if (success == true) {
    		rootNode = slides_xml.firstChild;
    		totalSlides = rootNode.childNodes.length;
    		firstSlideNode = rootNode.firstChild;
    		currentSlideNode = firstSlideNode;
    		updateSlide(firstSlideNode);
    	}
    }
    
    function preload (targetClip) {
    	ImgBytesLoaded = _root.targetClip.getBytesLoaded();
    	ImgBytesTotal = _root.targetClip.getBytesTotal();
    	
    	if (ImgBytesLoaded >= ImgBytesTotal){
    		return(targetClip);
    	} else {
    		preload();
    		trace ("preloading again");
    	}
    	return(targetClip);
    }
    
    // Updates the current slide with new image and text 
    function updateSlide(newSlideNode) {
    	
    	imagePath = newSlideNode.attributes.jpegURL;
    	slideText = newSlideNode.firstChild.nodeValue;
    	loadMovie(imagePath, targetClip);
    	
    	preload (targetClip);
    	
    	//Alpha
    	targetClip._alpha = 0;
    	_root.onEnterFrame = function() {
    		if(targetClip._alpha >= 100){
    			break;
    		} else {
    			targetClip._alpha += 5;
    		}
    	}
    	_global.intervallo = setInterval(pausa,attesa);
    	trace ("intervallo"  + _global.intervallo);
    
    }
    
    function pausa() {
    	nextSlideNode = currentSlideNode.nextSibling;
    	clearInterval(_global.intervallo);
    	if (nextSlideNode != null) {
    		updateSlide(nextSlideNode);
    		currentSlideNode = nextSlideNode;
    	} else {
    		slides_xml.onLoad = startSlideShow;
    		slides_xml.load("slides.xml");
    	}
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    Ok, ho semplificato tutto così, ma mi da un'interruzione a causa di un loop infinito. Perchè??!!!

    codice:
    function updateSlide(newSlideNode) {
    	
    	imagePath = newSlideNode.attributes.jpegURL;
    	slideText = newSlideNode.firstChild.nodeValue;
    	loadMovie(imagePath, targetClip);
    	
    	tBytes = _root.targetClip.getBytesTotal();
    	lBytes = _root.targetClip.getBytesLoaded();
    	
    	if (lBytes == tBytes) {
    		trace ("image loaded")
    	} else {
    		break;
    		clearInterval(_global.intervallo);
    		updateSlide(currentSlideNode);
    	}
    	
    	//Alpha
    	targetClip._alpha = 0;
    	_root.onEnterFrame = function() {
    		if(targetClip._alpha >= 100){
    			break;
    		} else {
    			targetClip._alpha += 5;
    		}
    	}
    	_global.intervallo = setInterval(pausa,attesa);
    	trace ("intervallo"  + _global.intervallo);
    
    }
    
    function pausa() {
    	nextSlideNode = currentSlideNode.nextSibling;
    	clearInterval(_global.intervallo);
    	if (nextSlideNode != null) {
    		updateSlide(nextSlideNode);
    		currentSlideNode = nextSlideNode;
    	} else {
    		slides_xml.onLoad = startSlideShow;
    		slides_xml.load("slides.xml");
    	}
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    Semplificato ancora un pochino....ma non mi convince del tutto, perchè alcune immagini, nonostante pesino meno di altre, "bloccano" il movie: non mi dà più l'errore di "infinite loop" ma semplicemente si blocca e se cerchi di fermarlo si chiude flash.


  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    Ops....il codice

    codice:
    function updateSlide(newSlideNode) {
    	
    	imagePath = newSlideNode.attributes.jpegURL;
    	slideText = newSlideNode.firstChild.nodeValue;
    	loadMovie(imagePath, targetClip);
    	
    	tBytes = _root.targetClip.getBytesTotal();
    	lBytes = _root.targetClip.getBytesLoaded();
    	
    	if (lBytes == tBytes) {
    		trace ("image loaded");
    	} else {
    		do {
    			clearInterval(_global.intervallo);
    		}
    		while (lBytes < tBytes);
    	}
    	
    	//Alpha
    	targetClip._alpha = 0;
    	_root.onEnterFrame = function() {
    		if(targetClip._alpha >= 100){
    			break;
    		} else {
    			targetClip._alpha += 5;
    		}
    	}
    	_global.intervallo = setInterval(pausa,attesa);
    	trace ("intervallo"  + _global.intervallo);
    
    }
    
    function pausa() {
    	nextSlideNode = currentSlideNode.nextSibling;
    	clearInterval(_global.intervallo);
    	if (nextSlideNode != null) {
    		updateSlide(nextSlideNode);
    		currentSlideNode = nextSlideNode;
    	} else {
    		slides_xml.onLoad = startSlideShow;
    		slides_xml.load("slides.xml");
    	}
    }

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