Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Immagini in sequenza su XML + ALPHA

    Salve a tutti.
    Uso questo codice per leggere dei dati da un XML e mostrarli in una sequenza di immagini pescate da una cartella (Flash CS3 - AS3):

    Codice PHP:
    function loadNews(num:int):void {
        
    activeNews num;

        
    display_mc.mytitle_txt.text title_arr[num];
        
    display_mc.cat_txt.text category_arr[num];
        
    IMGloader_mc.link "page.asp?ID="+idr_arr[num];
        
    special_mc.gotoAndStop(idr_arr[num]);

        var 
    img_url:String image_arr[num];
        var 
    loader:Loader = new Loader();
        var 
    request_url:URLRequest = new URLRequest(img_url);

        
    loader.load(request_url);
        
    loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESSprogressListener);
        
    loader.contentLoaderInfo.addEventListener(Event.COMPLETEcompleteListener);

        function 
    progressListener(e:ProgressEvent):void {
            var 
    bl:int e.bytesLoaded;
            var 
    bt:int e.bytesTotal;
            var 
    percent:int Math.ceil((bl*100)/bt);
            
    IMGloader_mc.preloader_mc.scaleY percent;
        }
        function 
    completeListener(e:Event):void {
            
    IMGloader_mc.holder_mc.addChild(loader.content);
        }

    Fin qua, funziona alla grande .
    Volevo rendere un pochino più accattivante la cosa (fanatica..... ) aggiungendo un FADE alle immagini che compaiono e ho provato (dal basso della mia ignoranza) a modificare il codice in questo modo:
    (freccine >>> per le righe aggiunte)
    Codice PHP:
    function loadNews(num:int):void {
        
    activeNews num;

        
    display_mc.mytitle_txt.text title_arr[num];
        
    display_mc.cat_txt.text category_arr[num];
        
    IMGloader_mc.link "page.asp?ID="+idr_arr[num];
        
    special_mc.gotoAndStop(idr_arr[num]);

        var 
    img_url:String image_arr[num];
        var 
    loader:Loader = new Loader();
        var 
    request_url:URLRequest = new URLRequest(img_url);

        
    loader.load(request_url);
        
    loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESSprogressListener);
        
    loader.contentLoaderInfo.addEventListener(Event.COMPLETEcompleteListener);

        function 
    progressListener(e:ProgressEvent):void {
            var 
    bl:int e.bytesLoaded;
            var 
    bt:int e.bytesTotal;
            var 
    percent:int Math.ceil((bl*100)/bt);
            
    IMGloader_mc.preloader_mc.scaleY percent;
        }
        function 
    completeListener(e:Event):void {
            
    IMGloader_mc.holder_mc.addChild(loader.content);

    >>>        for (var 
    myalpha 0myalpha <= 100; ++myalpha) {
    >>>            
    IMGloader_mc.holder_mc.alpha myalpha;
    >>>        }

        }

    Questo nella mia testolina avrebbe dovuto creare un FADE-IN su ogni immagine (in seguito sarei passata al FADE-OUT se non mi fossi subito arpionata ....) e come logica dovrebbe funzionare, invece fa solo un casino e l'alpha non si schioda.

    Dove sbaglio?
    :master:
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    il ciclo for ha un tempo di risposta invisibile all'occhio e viene eseguito in un tempo praticamente nullo, con la conseguenza che il fade ci sarà, ma immediato e non visibile
    per realizzare un fade a tempo si utilizza un codice di incremento graduale nel tempo sfruttando ad esempio l'evento ENTER_FRAME che si verifica costantemente ogni tot in coincidenza con il framerate del filmato
    esiste anche un metodo più semplice, si tratta dell'utilizzo della classe Tween, di cui si è spesso discusso tra queste pagine e di cui dovresti facilmente trovare spiegazione all'interno della guida in linea di Flash (Tasto funzione F1)
    perdona la domanda, ma il codice per la lettura dll'xml ecc... l'hai scritto tu?

  3. #3
    Ciao AND!
    Alla tua domanda rispondo MAGARI!, nel senso che mi piacerebbe essere in grado di scrivere codice di questo tipo da zero ma purtroppo la mia dimestichezza si concentra su ASP, .NET, PHP, SQL, mentre con ActionScript ho difficoltà che definirei OBESE (poi con questo AS3, non ne parliamo proprio!!!!).....! :rollo:
    No, diciamo che dopo lungo patire sono riuscita a personalizzarmi uno script esistente, l'ho integrato con ASP/ASP.NET (quest'ultimo si occupa di ridimensionare le immagini, con Flash non sarei MAAAAAAAAI stata in grado) e adesso fa quello che mi serve.
    La classe Tween la conosco, l'ho anche usata un paio di volte ma, visti i miei deficit di cui sopra, non saprei proprio come integrarla in questo codice.

    Come direbbe Totò:
    "Lei è proprio un IGNORANTE............. in materia di ActionScript"
    :ignore:
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Era solo una mia curiosità personale
    Comunque il fatto di usare la tween singolarmente o di integrarla in quel codice non ne cambia più di tanto l'utilizzo, dovresti giusto usare l'accorgimento di dare un nome diverso ad ogni tween che richiami, ma è facile, basta "pusharle" dentro ad un array ed eviti mille sbattimenti.
    Ti scrivo la modifica, ma leggila attentamente, vedrai che è meno complicata di quello che credi.

    Codice PHP:
    function loadNews(num:int):void {
        
    activeNews num;

        
    display_mc.mytitle_txt.text title_arr[num];
        
    display_mc.cat_txt.text category_arr[num];
        
    IMGloader_mc.link "page.asp?ID="+idr_arr[num];
        
    special_mc.gotoAndStop(idr_arr[num]);

    >>>    var 
    tweens:Array = new Array();
        var 
    img_url:String image_arr[num];
        var 
    loader:Loader = new Loader();
        var 
    request_url:URLRequest = new URLRequest(img_url);

        
    loader.load(request_url);
        
    loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESSprogressListener);
        
    loader.contentLoaderInfo.addEventListener(Event.COMPLETEcompleteListener);

        function 
    progressListener(e:ProgressEvent):void {
            var 
    bl:int e.bytesLoaded;
            var 
    bt:int e.bytesTotal;
            var 
    percent:int Math.ceil((bl*100)/bt);
            
    IMGloader_mc.preloader_mc.scaleY percent;
        }
        function 
    completeListener(e:Event):void {
            var 
    clip IMGloader_mc.holder_mc.addChild(loader.content);
    >>>        
    tweens.push(new Tween(clip"alpha"null010.5true));
        }

    ho indicato le parti aggiunte come hai fatto tu

    in pratica ho creato un array nella stessa zona dove crei alcuni tuoi oggetti, poi dentro il COMPLETE ho "vincolato" ad una variabile il contenuto del loader e l'ho chiamata "clip" usandola poi nei richiami delle tween che faccio direttamente dentro al "push" dell'array
    già così dovrebbe funzionare correttamente

  5. #5
    Ma è STUPENDO!
    Grazie mille, proprio quello che mi serviva.

    Mi spieghi solo una cosa, giusto per accrescere la mia Qultura?
    Una volta sono diventata letteralmente PAZZAAAA VVoVe: per creare un CROSSFADE e fare in modo che l'immagine n°2 sfumasse sopra la n°1 e poi la n°3 sopra la n°2, ecc. ecc.
    Mi ricordo che mi infilai in un tunnel di attachMovie, swapDepths, i=i+1, k=k+2,... che ho avuto la nausea per settimane...!
    Qui vedo che la cosa avviene "automaticamente", non riesco a realizzare come e dove gestisce le profondità dei vari clip. Mi incuriosisce capire come funziona.

    E' proprio vero, il sapere aiuta!
    Intanto grazie ancora, kisses.



    PS: Ti eri dimenticato di mettere le freccettine >>> alla riga modificata "var clip.....", ma ci sono arrivata da sola..... CHE GENIO!
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Non ho messo le >>> perchè era una riga che avevi già nel tuo codice ed ho solo modificato, te l'ho scritto nel messaggio, ma in effetti non era molto chiaro.
    Per l'altra domanda, dipende da caso a caso, ma in generale se hai una serie di clip, non è difficile gestirli, ma devi metterci un minimo di progettazione iniziale per poterli controllare per bene.

  7. #7
    Scusami, non mi sono spiegata.
    Lo immagino che varia da caso a caso...
    Volevo dire, in questo codice specifico come viene gestita la sovrapposizione delle immagini? Non riesco a capire come fa a stare in primo piano sempre l'ultima caricata.
    Chiedevo solo una chiarificazione in questo senso....

    Curiosity is woman!
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    non ho analizzato il codice, ma se le immagini non vengono spostate, allora dipende dal ciclo, in pratica il ciclo legge sistematicamente dalla prima all'ultima immagine da caricare e poi, una volta caricata, la aggiunge automaticamente alla visualizzazione, quindi vedi le immagini e le sfumature man mano che queste si caricano fino all'ultima, che essendo appunto l'ultima, prenderà il posto disponibile più alto nella visualizzazione, nascondendo le altre immagini

  9. #9
    AND AIUTAMI TUUUU!
    Scherzo scherzo.... Nulla di grave.


    Riapro questo 3d solo per un consiglio "grammaticale".
    Ho aggiunto dei pulsanti per navigare tra i vari nodi dell'XML (tutto da sola, senza chiedere nienteeeee!... che mito :rollo: ).

    Tuttavia ho piazzato 4 pulsanti sullo stage e vorrei "ottimizzare", però non riesco, mi dà sempre errore (una roba tipo: "assegnazione forzata di un int alla function"), sicuramente c'è un problema di sintassi. Ora ho scritto il codice per intero e funziona bene, però mi piaceva snellirlo un po' (e soprattutto CAPIRE).
    Eccolo com'è attualmente:
    Codice PHP:
    numb_btn0.addEventListener(MouseEvent.CLICKnumbListener0);
    function 
    numbListener0(e:MouseEvent):void {
        
    loadNews(0);
        
    volte 0;
    }
    numb_btn1.addEventListener(MouseEvent.CLICKnumbListener1);
    function 
    numbListener1(e:MouseEvent):void {
        
    loadNews(1);
        
    volte 1;
    }
    numb_btn2.addEventListener(MouseEvent.CLICKnumbListener2);
    function 
    numbListener2(e:MouseEvent):void {
        
    loadNews(2);
        
    volte 2;
    }
    ecc... 

    Io ho provato così:
    Codice PHP:
    function numbListener(e:MouseEvent,mynumb:int):void {
        
    loadNews(mynumb);
        
    volte mynumb;
    }
    numb_btn0.addEventListener(MouseEvent.CLICKnumbListener(0));
    numb_btn1.addEventListener(MouseEvent.CLICKnumbListener(1));
    numb_btn2.addEventListener(MouseEvent.CLICKnumbListener(2));
    ecc.... 
    Ma ricevo l'errore di cui sopra.
    Sapete dirmi dove sbaglio?
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Le funzioni associate agli eventi non possono essere modificate per accettare più di un parametro, ma gestiscono solo il parametro di evento, che tu non gli puoi passare.
    Ora, se i pulsanti sono MovieClip, è possibile aggiungergli delle variabili senza incorrere in errori vari, bisogna verificare.
    Comunque in generale se fai una cosa del genere, dovresti ottenere il risultato sperato:

    Codice PHP:
    function numbListener(e:MouseEvent) {
        
    loadNews(e.target.mynumb);
        
    volte e.target.mynumb;
    }
    for (var 
    i:uint=0i<4i++) {
        
    this["numb_btn"+i].mynumb i;
        
    this["numb_btn"+i].addEventListener(MouseEvent.CLICKnumbListener);


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.