Pagina 1 di 7 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 65
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    62

    [AS3] Descrizione immagini da xml esterno

    Ciao, eccomi con un nuovo problema
    Sto cercando di mettere in una galleria un campo di testo con la descrizione della relativa immagine visualizzata (miniature=pulsanti). Le descrizioni sono in un file XML esterno.

    Ho questo codice da un Galleria interamente in XML, che non vale nel caso attuale dove invece ho una struttura completamente diversa (le miniature sono sullo stage ed ognuna richiama il relativo SWF esterno).

    Codice PHP:

    var imageText:TextField = new TextField();

    var 
    imageLoader:Loader;
    var 
    xml:XML;
    var 
    xmlList:XMLList;

    var 
    xmlLoader:URLLoader = new URLLoader();
    xmlLoader.load(new URLRequest("images.xml"));

    xmlLoader.addEventListener(Event.COMPLETExmlLoaded);
                                                          
    function 
    xmlLoaded(event:Event):void
    {
        
    xml XML(event.target.data);
        
    xmlList xml.children();
        
        for(var 
    i:int 0xmlList.length(); i++)
        {
            
    imageLoader = new Loader();
            
    imageLoader.load(new URLRequest(xmlList[i].attribute("thumb")));
            
    imageLoader.25;
            
    imageLoader.103 25;
            
    imageLoader.name xmlList[i].attribute("source");
            
    addChild(imageLoader);
            
    imageLoader.addEventListener(MouseEvent.CLICKshowDida);
        }
        
    }

    function 
    showDida(event:MouseEvent):void
    {
        
    imageLoader = new Loader();
        
    imageLoader.load(new URLRequest(event.target.name));
        
    imageLoader.25;
        
    imageLoader.0;
        
    addChild(imageLoader);
        
    imageText.imageLoader.x;
        
    imageText.imageLoader.400;
        for(var 
    j:int 0xmlList.length(); j++)
        {
            if(
    xmlList[j].attribute("source") == event.target.name)
            {
                
    imageText.text xmlList[j];
            }
        }
    }

    imageText.autoSize TextFieldAutoSize.LEFT;
    addChild(imageText); 

    Questo è il codice della Galleria su cui vorrei inserire (da XML esterno) la didascalia (descrizione) di ogni immagine in un campo di testo, come detto prima:

    Codice PHP:

    import fl
    .transitions.*;
    import fl.transitions.easing.*;



    page01Button.addEventListener (MouseEvent.CLICKbuttonClicked);
    page02Button.addEventListener (MouseEvent.CLICKbuttonClicked);
    page03Button.addEventListener (MouseEvent.CLICKbuttonClicked);
    btn1_mc.addEventListener (MouseEvent.CLICKbuttonClicked);



    page01Button.buttonMode true;
    page02Button.buttonMode true;
    page03Button.buttonMode true;
    btn1_mc.buttonMode true;




    btn1_mc.addEventListener(MouseEvent.ROLL_OVERonButtonOver);
    btn1_mc.addEventListener(MouseEvent.ROLL_OUTonButtonOut);

    function 
    onButtonOver(e:MouseEvent):void
    {
        
    e.currentTarget.gotoAndPlay("over");
    }

    function 
    onButtonOut(e:MouseEvent):void
    {
        
    e.currentTarget.gotoAndPlay("out");
    }



    var 
    loader:Loader;


    var 
    urlRequest:URLRequest;


    var 
    tweens:Array = new Array();


    var 
    currentPage:MovieClip null;


    var 
    nextPage:MovieClip null;


    function 
    buttonClicked (e:Event):void {


        
    loader = new Loader();


        if (
    e.target == btn1_mc) {
    try {

    this.removeChild(static_mc);}
    catch (
    err:Error) {
            
    // nessun errore }
            
            
            
    urlRequest = new URLRequest("page1.swf");
            
    loader.load (urlRequest);
            
        }
        }

        
        else if (
    e.target == page01Button) {
    try {

    this.removeChild(static_mc);}
    catch (
    err:Error) {
            
    // nessun errore }
            
            
    urlRequest = new URLRequest("page2.swf");
            
    loader.load (urlRequest);
        }
        }


        else if (
    e.target == page02Button) {

    try {

    this.removeChild(static_mc);}
    catch (
    err:Error) {
            
    // nessun errore }
            
    urlRequest = new URLRequest("page1.swf");
            
    loader.load (urlRequest);
        }
        }
        
        else {
            
            try {

    this.removeChild(static_mc);}
    catch (
    err:Error) {
            
    // nessun errore }

            
    urlRequest = new URLRequest("page2.swf");
            
    loader.load (urlRequest);
        }
        }
        


        
    loader.contentLoaderInfo.addEventListener(Event.COMPLETEfileLoaded);

    }


    function 
    fileLoaded(e:Event):void {


        
    nextPage e.target.content;


        if(
    currentPage != null) {

        
            var 
    tweenX:Tween = new Tween(currentPage"x"Regular.easeOut,
                            
    currentPage.x2001true);

            var 
    tweenAlpha:Tween = new Tween(currentPage"alpha"Regular.easeOut,
                            
    101true);

            
    tweens.push(tweenX);
            
    tweens.push(tweenAlpha);

        
            
    tweenX.addEventListener(TweenEvent.MOTION_FINISHcurrentPageGone);
        }


        else {
            
    showNextPage();
        }
    }


    function 
    showNextPage():void {

        
            var 
    tweenX:Tween = new Tween(nextPage"x"Regular.easeOut,
                            -
    20002true);

            var 
    tweenAlpha:Tween = new Tween(nextPage"alpha"Regular.easeOut,
                            
    011true);

            
    tweens.push(tweenX);
            
    tweens.push(tweenAlpha);

            
    addChild(nextPage);


            
    currentPage nextPage;
    }


    function 
    currentPageGone(e:Event):void {

        
    removeChild(currentPage);

        
    showNextPage();


    Ho provato in vari modi, per ore ed ore, ma data la mia inesperienza (ho iniziato a studiare, ma non è cosa immediata capire bene come muoversi in ogni situazione... , ottengo sempre qualche errore

    Ogni indicazione o esempio per questo tipo di situazione è molto gradito

    In pratica e riassumendo, cliccando sui pulsanti (miniature), oltre all'animazione di entrata ed uscita dei vari SWF, vorrei inserire un testo descrittivo da XML esterno, il cui codice (il primo citato) funziona a se stante, ma non all'interno della galleria (seecondo codice citato).

    Spero di non aver fatto troppa confusione nell'esposizione del problema

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    62
    mumble... non si può proprio fare?

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Considerato che le miniature già si trovano sullo stage, al posto tuo non mi sbatterei più di tanto ad usare un xml solo per le descrizioni, aggiungi su ogni miniatura un campo di testo nascosto con il testo che vorresti visualizzare per ogni miniatura e quando la clicchi dici a flash di scrivere sul campo di testo della descrizione quello che c'è scritto sul campo di testo nascosto della miniatura cliccata.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    62
    Intanto ti ringrazio per l'indicazione, che in effetti mi sembra molto pratica: devo studiare come farla, ma mi serve per imparare, sperando di riuscire senza disturbare troppo

    Magari potresti darmi qualche dritta di come gestire il fatto che le miniature(pulsanti) abbiano già una funzione (if... etc), per me già abbastanza complessa?

    Il fatto dell'xml è per imparare a gestire anche quello
    (come avrai capito dal codice 1 citato, ci sto studiando

    Comunque vorrei che il testo relativo ad ogni miniatura fosse esterno, per poterlo aggiornare anche senza avere Flash a disposizione.

    Partendo dalle mie limitate conoscenze, mi viene in mente di gestire un'area di testo dinamico per ognuna delle miniature. E' così che intendevi? Oppure un semplice testo dinamico da gestire con un file.txt esterno?

    Non ho però le idee molto chiare (anzi piuttosto annebbiate a dir la verità) su come inserire la funzione nella struttura dei vari 'if', per ogni pulsante. (Ti ringrazio anticipatamente per qualsiasi indicazione o esempio aggiuntivi)

    Per l'invisibilità è sufficiente rendere inizialmente tutte le aree di testo (o comunque i testi) con qualcosa del tipo:
    Codice PHP:
     myText1.visible false 
    ???

    e poi passare al 'true' nella sequenza degli 'if' ?

    In attesa della tua risposta, ti auguro un buon pomeriggio e ti ringrazio moltissimo per la disponibilità.

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Il discorso è molto articolato e affrontarlo in un thread singolo risulterebbe un po' dispersivo, andiamo comunque per gradi, e vediamo come si sviluppa.

    Prima di rispondere a tutto ti consiglio di leggere la guida di base di actionscript che trovi nel sito di riferimento di questo forum (flash.html.it), dove vengono chiariti diversi aspetti, alcuni dei quali hai elencato anche tu, tra le tue perplessità.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    62
    d'accordo. provo a dare un'occhiata alla guida cui accenni.

    Mi puoi dire intanto se è meglio un testo dinamico o un'area di testo per ogni pulsante?

    Grazie, ciao

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Io andrei sul testo dinamico, devi solo fare in modo che ad ogni pulsante sia legata la frase corretta. Mi viene un dubbio, le azioni dei pulsanti sono già impostate no?

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    62
    (vedi secondo codice allegato al primo messaggio di questo stesso thread)

    Ho già fatto vari tentativi, ma ottengo sempre errori.


    mi dici se è meglio che scriva (per gli stessi pulsanti) una funzione diversa, oppure devo inserire qualcosa negli 'if..' che già ci sono?

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Una funzione basta per tutti i pulsanti, ma è necessaria una impostazione "a monte" sui pulsanti, che però dovrebbero essere istanze della classe MovieClip.
    Ti faccio un esempio svincolato dal tuo codice per farti capire quello che intendo.
    Mettiamo di avere tre pulsanti (movieclip) che devono fare un saluto quando vengono cliccati. Gli si imposta una variabile "saluto" e poi nella funzione viene utilizzato il target che sceglie automaticamente il target cliccato (lo trova nel parametro che viene passato alla funzione).

    Codice PHP:
    pulsante1.saluto "ciao!";
    pulsante2.saluto "hola!";
    pulsante3.saluto "salut!";

    pulsante1.addEventListener(MouseEvent.CLICKclickHandler);
    pulsante2.addEventListener(MouseEvent.CLICKclickHandler);
    pulsante3.addEventListener(MouseEvent.CLICKclickHandler);

    function 
    clickHandler (evt:MouseEvent null):void {
        
    trace(evt.target.saluto);


  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    62
    Questo mi è chiaro.
    Il mio dubbio è più collegato al fatto che nel mio codice ci sono gli if vari per la funzionalità legata ai pulsanti.
    Infatti, nel codice 1 riportato all'inizio, tutto mi funziona.

    E' quando voglio assegnare la stessa cosa ai pulsanti che non riesco a farlo funzionare.

    Ad esempio ora sto provando ancora con XML (che dalle miniature create in AS3 funziona perfettamente), ma così (v. sotto) provando solo con il primo pulsante (sullo stage) il testo non appare.
    Perlomeno ora riesco a non avere errore!

    Il resto del codice è quello dell'inserto 2 all'inizio del thread.
    Cosa c'è che non va?



    Codice PHP:
    var imageText:TextField = new TextField();

    var 
    imageLoader:Loader;
    var 
    xml:XML;
    var 
    xmlList:XMLList;

    var 
    xmlLoader:URLLoader = new URLLoader();
    xmlLoader.load(new URLRequest("images.xml"));

    xmlLoader.addEventListener(Event.COMPLETExmlLoaded);
                                                          
    function 
    xmlLoaded(event:Event):void

    {
        
    xml XML(event.target.data);
        
    xmlList xml.children();
        
        for(var 
    i:int 0xmlList.length(); i++)
        {
            
        
    btn1_mc.addEventListener(MouseEvent.MOUSE_OVERmostraDida);
        }
        
    }

    function 
    mostraDida(event:MouseEvent):void
    {
        
    imageLoader = new Loader();
        
    imageText.350;
        
    imageText.410;
        for(var 
    j:int 0xmlList.length(); j++)
        {
            if(
    xmlList[j].attribute("source") == event.target.name)
            {
                
    imageText.text xmlList[j];
            }
        }
    }

    imageText.autoSize TextFieldAutoSize.LEFT;
    addChild(imageText);
    trace (); 

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.