Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 44
  1. #1

    Slideshow + XML + attachMovie con testo dinamico

    Ciao. Devo creare una slideshow che in pratica mostri in loop continuo una decina di immagini, pescandole da un file XML, con transazione con effetto dissolvenza. Fin qui nessun problema, perchè ho trovato un ottimo script perfettamente funzionante.
    Il punto è che io oltre alle immagini devo mostrare un breve testo descrittivo, il quale è salvato nell'XML come attributo.
    Siccome vorrei che il riquadro contenente il testo descrittivo apparisse da sotto anzichè avere lo stesso effetto dissolvenza dell'immagine, ho provato a creare un movieclip con queste caratteristiche (rettangolo + testo dinamico) e l'ho lasciato nella libreria, con l'idea di fare un attachMovie nel momento in cui lo script mi carica l'immagine relativa.
    Però non funziona, ho provato e riprovato ma non funziona e non riesco a capire dove sbaglio. Sotto trovate il codice completo (in neretto le modifiche fatte da me ma non funzionanti). Ve lo spiego un attimo perchè è molto lungo.
    In pratica lui crea un arrai con tutte le immagini presenti nell'XML (function parse), quindi controlla se la presentazione è random oppure no (function ImageGen), a quel punto carica una immagine nel loader1 e quando ha finito di caricarsi ne modifica la profondità, scambiandola con il loader2, e applica una variazione sull'alpha da 0 a 100 per un certo intervallo di tempo (function loadImages e createLoader), e così di seguito.

    codice:
    // set random # variables - each must be 0 for first 'while' loop below
    var randomNum = 0;
    var randomNumLast = 0;
    
    // parent container
    var container_mc = this.createEmptyMovieClip("container",0);
    // movie clip containers
    container_mc.createEmptyMovieClip("loader1_mc",2);
    container_mc.createEmptyMovieClip("loader2_mc",1);
    
    // preload watcher
    this.createEmptyMovieClip("watcher_mc",100);
    
    // load xml
    images_xml = new XML();
    images_xml.ignoreWhite=true;
    images_xml.onLoad = parse;
    images_xml.load("images.xml");
    
    function parse(success) {
    	if (success) {
    		imageArray = new Array();
    		var root = this.firstChild;
    		_global.numPause = Number(root.attributes.timer * 1000);
    		_global.order = root.attributes.order;
    		_global.looping = root.attributes.looping;
    		_global.fadetime = Number(root.attributes.fadetime);
    		_global.xpos = Number(root.attributes.xpos);
    		_global.ypos = Number(root.attributes.ypos);
    		var imageNode = root.lastChild;
    		var s=0;
    		while (imageNode.nodeName != null) {
    			imageData = new Object;
    			imageData.path = imageNode.attributes.path;
    			imageData.desc = imageNode.attributes.desc;
    			imageArray[s]=imageData;
    			imageNode = imageNode.previousSibling;
    			s++;
    		}
    		// place parent container
    		container_mc._x = _global.xpos;
    		container_mc._y = _global.ypos;
    		// parse array
    		imageArray.reverse();
    		imageGen(imageArray);
    	} else {
    		trace('problem');
    	}
    }
    
    // depth swapping
    function swapPlace(clip,num) {
    	eval(clip).swapDepths(eval("container_mc.loader"+num+"_mc"));
    }
    
    function loadImages(data,num) {
    	if (i==undefined || i == 2) {
    		i=2;
    		createLoader(i,data,num);
    		i=1;
    	} else if (i==1) {
    		createLoader(i,data,num);
    		i=2;
    	}
    }
    function createLoader(i,data,num) {
    	thisLoader=eval("container_mc.loader"+i+"_mc");
    	thisLoader._alpha=0;
    	thisLoader.loadMovie(data[num].path);
    	watcher_mc.onEnterFrame=function () {
    		var picLoaded = thisLoader.getBytesLoaded();
    		var picBytes = thisLoader.getBytesTotal();
    		if (isNaN(picBytes) || picBytes < 4) {
    			return;
    		}
    		if (picLoaded / picBytes >= 1) {
    			swapPlace("container_mc.loader2_mc",1);
    			alphaTween = new mx.transitions.Tween(thisLoader, "_alpha", mx.transitions.easing.Regular.easeOut,0,100,_global.fadetime,true);
    			timerInterval = setInterval(imageGen,_global.numPause,data);
    			thisLoader.attachMovie("text_mc", "mc_text", 100, {_x:0, _y:0});
    			thisLoader.mc_text.description.text = data.desc;
    			delete this.onEnterFrame;
    			
    		}
    	}
    }
    function imageGen(data) {
    	// random, or sequential?
    	if (_global.order=="random") {
    		// choose random # between 0 and total number of images
    		while (randomNum == randomNumLast) {
    			randomNum = Math.floor(Math.random() * data.length);
    			trace(randomNum);
    		}
    		loadImages(data,randomNum);
    		randomNumLast = randomNum;
    	} else if (_global.order=="sequential") {
    		// start at 0, increment to total number of images, then drop back to zero when done
    		if (p==undefined || p==data.length && _global.looping=="yes") { p=0; } else { break; }
    		loadImages(data,p);
    		p++;
    	} else {
    		trace ("order attribute in xml isn't correct - must specify either 'random' or 'sequential'");
    	}
    	clearInterval(timerInterval);
    }
    stop();

    Aiutatemi

  2. #2
    comè l'xml?
    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 !

  3. #3
    Eccolo qua
    codice:
    <images timer="5" order="sequential" fadetime="2" looping="yes" xpos="0" ypos="0">
    	<image id="1" path="images/1.jpg" description="Image 1 - Cappella degli Scrovegni" />
    	<image id="2" path="images/2.jpg" description="Image 2 - Basilica del Santo" />
    	<image id="3" path="images/3.jpg" description="Image 3 - Prato della Valle" />
    	<image id="4" path="images/4.jpg" description="Image 4 - Restauro del Ponte Vecchio" />
    </images>
    comunque mi ero dimenticata di fare il concatenamento sul clip text_mc, l'ho fatto e ho modificato le righe in questo modo:
    codice:
    _root.attachMovie("text_mc", "mc_text", 100, {_x:0, _y:0});
    _root.mc_text.description.text = data.desc;
    alphaTween = new mx.transitions.Tween(thisLoader, "_alpha", mx.transitions.easing.Regular.easeOut,0,100,_global.fadetime,true);
    timerInterval = setInterval(imageGen,_global.numPause,data);
    delete this.onEnterFrame;
    così facendo ora mi mostra il movieclip text_mc però senza testo al suo interno, e inoltre si blocca sulla prima foto e non va più avanti
    secondo me il problema è sull'onEnterFrame... :master:

  4. #4
    il testo nn te lo mostra xchè nel xml l'attributo è description non desc

    quindi questo
    imageData.desc = imageNode.attributes.desc;

    dovrebbe essere cosi
    imageData.desc = imageNode.attributes.description;

    mo vedo le altre cose
    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 !

  5. #5
    Sì sì mi ero accorta subito dopo aver postato di quella svista.
    Comunque sono andata avanti con la cosa, il problema del blocco del movie era esattamente qui:

    thisLoader.attachMovie("text_mc", "mc_text", 100, {_x:0, _y:0});

    mettendo this al posto di thisLoader il movieclip si carica correttamente (si tratta di un rettangolo che si sposta dal basso verso l'alto, e al suo interno ha la casella di testo dinamico "description").

    Il problema è che continua a non caricare il testo.. Ho idea che la variabile "data.desc" dia dei problemi.. Ho provato a fare un trace ma lo salta, non capisco perchè

  6. #6
    Ok. Ho risolto. Era sufficiente dichiarare come globale la variabile contenente il valore descrizione, e richiamarlo direttamente nel movieclip contenente il testo dinamico.



  7. #7
    Originariamente inviato da elysaweb
    Ok. Ho risolto. Era sufficiente dichiarare come globale la variabile contenente il valore descrizione, e richiamarlo direttamente nel movieclip contenente il testo dinamico.


    io forse ho fatto diversamente...
    lo puoi vedere qua
    http://www.leonardoinformatica.it/xf...ova_slide.html
    posto il cod....serve solo un clip istanziato pro con dentro una casella di testo dinamica istanziata description e piazzato sullo stage
    sul frame
    Codice PHP:
    // set random # variables - each must be 0 for first 'while' loop below
    var randomNum 0;
    var 
    randomNumLast 0;

    //metto il clip sopra i contenitori delle foto
    _root.pro.swapDepths(1000)


    import mx.transitions.Tween;
    import mx.transitions.easing.Regular;

    //creo una function che mi permetterà di spostare il clip della descrizione
    //e a seconda che deve apparire o scomparire gli viene applicato anche un effetto alpha determinato dalla var cosa
    //cosa=0 deve andare via
    //cosa=1 deve comparire
    function spostatitolo(mcfinecosa) {
       
    tipoRegular.easeOut
       
    //trace("cosa"+cosa)
       
    muovititolo = new mx.transitions.Tween(mc"_y"tipomc._yfine10false);
       if(
    cosa==0){
           
    muovititolo = new mx.transitions.Tween(mc"_alpha"tipomc._alpha08false);
       }else{
           
    muovititolo = new mx.transitions.Tween(mc"_alpha"tipomc._alpha1008false);
       }
    }
    //fine function




    // parent container
    var container_mc this.createEmptyMovieClip("container",0);
    //imposto anche una maschera alle foto caricate
    container_mc.setMask(miaMask)
    // movie clip containers
    container_mc.createEmptyMovieClip("loader1_mc",2);
    container_mc.createEmptyMovieClip("loader2_mc",1);

    // preload watcher
    this.createEmptyMovieClip("watcher_mc",100);

    // load xml
    images_xml = new XML();
    images_xml.ignoreWhite=true;
    images_xml.onLoad parse;
    images_xml.load("images.xml");

    function 
    parse(success) {
        if (
    success) {
            
    imageArray = new Array();
            var 
    root this.firstChild;
            
    _global.numPause Number(root.attributes.timer 1000);
            
    _global.order root.attributes.order;
            
    _global.looping root.attributes.looping;
            
    _global.fadetime Number(root.attributes.fadetime);
            
    _global.xpos Number(root.attributes.xpos);
            
    _global.ypos Number(root.attributes.ypos);
            var 
    imageNode root.lastChild;
            var 
    s=0;
            while (
    imageNode.nodeName != null) {
                
    imageData = new Object;
                
    imageData.path imageNode.attributes.path;
                
    imageData.desc imageNode.attributes.description;
                
                
    imageArray[s]=imageData;
                
    imageNode imageNode.previousSibling;
                
    //trace(imageArray[s].desc)
                
    s++;
            }
            
    // place parent container
            
    container_mc._x _global.xpos;
            
    container_mc._y _global.ypos;
            
    // parse array
            
    imageArray.reverse();
            
    imageGen(imageArray);
        } else {
            
    trace('problem');
        }
    }

    // depth swapping
    function swapPlace(clip,num) {
        eval(
    clip).swapDepths(eval("container_mc.loader"+num+"_mc"));
    }

    function 
    loadImages(data,num) {
        if (
    i==undefined || == 2) {
            
    i=2;
            
    createLoader(i,data,num);
            
    i=1;
        } else if (
    i==1) {
            
    createLoader(i,data,num);
            
    i=2;
        }
    }
    function 
    createLoader(i,data,num) {
        
    //richiamo la funzione x farlo andare via
        
    ritorna()
        
    thisLoader=eval("container_mc.loader"+i+"_mc");
        
    thisLoader._alpha=0;
        
    thisLoader.loadMovie(data[num].path);
        
    watcher_mc.onEnterFrame=function () {
            var 
    picLoaded thisLoader.getBytesLoaded();
            var 
    picBytes thisLoader.getBytesTotal();
            if (
    isNaN(picBytes) || picBytes 4) {
                return;
            }
            if (
    picLoaded picBytes >= 1) {
                
    swapPlace("container_mc.loader2_mc",1);
                
    alphaTween = new mx.transitions.Tween(thisLoader"_alpha"mx.transitions.easing.Regular.easeOut,0,100,_global.fadetime,true);
                
    timerInterval setInterval(imageGen,_global.numPause,data);
                
    delete this.onEnterFrame;
                
    //qui sposto il titolo
                
    spostatitolo(_root.pro,15,1)
            }
        }
    }


    //function x far andare via il titolo prima che copia l'altra foto
    function ritorna(){
        
    tempo setInterval(function () { 
            
    spostatitolo(_root.pro,-65,0)
        
    clearInterval(tempo)},_global.numPause-600); 
    }


    function 
    imageGen(data) {
        
    // random, or sequential?
        
    if (_global.order=="random") {
            
    // choose random # between 0 and total number of images
            
    while (randomNum == randomNumLast) {
                
    randomNum Math.floor(Math.random() * data.length);
                
    trace(randomNum);
            }
            
    loadImages(data,randomNum);
            
    randomNumLast randomNum;
        } else if (
    _global.order=="sequential") {
            
    // start at 0, increment to total number of images, then drop back to zero when done
            
    if (p==undefined || p==data.length && _global.looping=="yes") { p=0; } else { break; }
                
    loadImages(data,p);
                
    trace("desc"+imageArray[p].desc)
                
    _root.testo.text =imageArray[p].desc;
                
    _root.pro.description.text=imageArray[p].desc;
            
    p++;
        } else {
            
    trace ("order attribute in xml isn't correct - must specify either 'random' or 'sequential'");
        }
        
    clearInterval(timerInterval);
    }
    stop(); 
    e faccio apparire con movimente dall'alto verso il basso il clip con la descrizione
    sempre con le tween

    cmq se hai risolto...
    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 !

  8. #8
    Wow sei un grande.. Hai fatto un lavorone... Complimenti!
    Io ho risolto in modo più artigianale, e sono soddisfatta perchè funziona, ma mi ripropongo di studiare il tuo metodo perchè è sicuramente più elegante...
    Grazie mille!!!


  9. #9
    Originariamente inviato da elysaweb
    Wow sei un grande.. Hai fatto un lavorone... Complimenti!
    Io ho risolto in modo più artigianale, e sono soddisfatta perchè funziona, ma mi ripropongo di studiare il tuo metodo perchè è sicuramente più elegante...
    Grazie mille!!!

    di niente figurati

    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 !

  10. #10
    Ciao Ragazzi,
    nello script messo a punto da voi a vostro avviso è possibile mettere uno scroll/slide che carichi delle miniature delle immagini e che permetta a chi vista il sito di scegliere di visualizzarne una in particolare? Per intenderci una cosa come quella descritta in questa guida di flash.html.it

    Dimenticavo: ho provato a spostare i movieclip creati su un livello in particolare che nel mio caso dovrebbe essere mascherato ma non riesco a smuoverli da quello "più alto" ... helpz!


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.