Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    semplice caricamento array pulsanti - swf

    salve a tutti,
    ho creato un array di pulsanti e movies così:

    var num:int;
    var movies:Array=new Array("movies/uno.swf","movies/due.swf","movies/tre.swf","movies/quattro.swf","movies/cinque.swf","movies/sei.swf","movies/sette.swf","movies/otto.swf");
    var buttons:Array=new Array(p1,p2,p3,p4,p5,p6,p7,p8);
    var carica:Loader=new Loader();

    i movies (ke dovrebbero essere di sfondo) vengono quindi richiamati correttamente sullo stage principale ma sovrapposti in primo piano allo stesso menù ovvero coprono i pulsanti.
    Con quale metodo potrei caricarli sullo sfondo senza ke infastidiscano la funzionalità del menù?
    dovrei forse caricarli all'interno di un clip contenitore o box posizionato su di un livello inferiore dello stage?
    grz x l'attenzione

  2. #2
    se l'argomento è stato ampiamente trattato vi sarei grato che qualcuno mi linkasse la discussione, ma da ricerca io non sono riuscito a trovare nulla in merito complice la mia inesperienza a riguardo, nonostante sia inscritto da molto tempo a questo forum.
    grz di nuovo

  3. #3
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao

    Potresti caricare i movies in un contenitore e posizionare questo contenitore a un livello sotto il menù oppure, potresti risolvere con lo swapChildren.

    In questo esempio ho 1 pulsante e il filmato.swf viene aggiunto allo stage con il suo addChild.
    Con lo swapChildren faccio lo scambio di livello riportando il pulsante sopra l'oggetto Loader:

    Codice PHP:
    var carico:Loader = new Loader;

    pulsante.addEventListener(MouseEvent.CLICKcarica);

    function 
    carica(evento:MouseEvent):void
    {
        
    carico.load(new URLRequest("filmato.swf"));
        
    addChild(carico);
        
    swapChildren(carico,pulsante);

    Nel tuo file dovresti avere un' unico MovieClip che contiene tutti i pulsanti e in tal caso il tuo Array sarebbe qualcosa del tipo:

    var buttons:Array=new Array(menu.p1,menu.p2,menu.p3,menu.p4 .....);

    Ci sono altri metodi come il setChildIndex. Un esempio:

    Codice PHP:
    var carico:Loader = new Loader;
    var 
    topPosition:uint numChildren 

    pulsante
    .addEventListener(MouseEvent.CLICKcarica);
    function 
    carica(evento:MouseEvent):void
    {
        
    carico.load(new URLRequest("filmato.swf"));
        
    addChild(carico);
        
    setChildIndex(caricotopPosition);

    Ottieni lo stesso risultato dell'esempio precedente ma in certi casi è più pratico questo secondo metodo.

    ciao

  4. #4
    ciao carissimo sleter ...
    Ogni tanto si vede sbazzicare qualche grande flasher su questo forum.
    Ottima descrizione.
    www.splashcode.it il blog dedicato ad ogni Web-Master

  5. #5
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Caro Mirco, ti ringrazio per l'immeritato "grande flasher" ma sai benissimo che non lo sono e quello che sò di Flash e ActionScript, lo devo anche a questo forum e agli scambi reciproci di informazioni e conoscenza che ho con te su skype.

    Poi sai che non si finisce mai di imparare e non sò se hai notato la citazione di Einstein che ho messo nella mia firma ... dubito molto di essere in grado di spiegare qualcosa come quella che ho scritto sopra a mia nonna e quindi dubito molto di averla davvero capita.

    un saluto e a rileggerci alla prossima !

    ciao

    P.S.: kloseout, scusa per la parentesi fuori argomento. Facci sapere se risolvi. Ciao !

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Olbia
    Messaggi
    2,930
    Bello e utile il secondo script. Una vera chicca. L'ho subito messo nel mio archivio pronto per essere tirato fuori alla bisogna, naturalmente in cima ho messo un commento //Autore: Sleter
    PS. mia nonna dopo aver letto i tuoi post si è messa a smanettare con Flash e fa lavori incredibili.

  7. #7
    non saprei come ringraziarti per l'aiuto cmq dopo vari tentativi non sono riuscito ad inserire il codice correttamente. Lo script ke ho eseguito è questo:

    var num:int;
    var movies:Array=new Array("movies/uno.swf","movies/due.swf","movies/tre.swf");
    var buttons:Array=new Array(p1,p2,p3);
    var carica:Loader=new Loader();
    var topPosition:uint = numChildren - 1

    for(var i:int=0;i<movies.length;i++){
    buttons[i].buttonMode=true;
    buttons[i].addEventListener(MouseEvent.CLICK, fotogramma);
    buttons[i].addEventListener(MouseEvent.CLICK,vai);
    buttons[i].id=i;
    }
    function fotogramma(evtObj:MouseEvent){
    gotoAndStop(evtObj.target.name)
    }
    function vai(evt:MouseEvent):void{
    var trova:URLRequest=new URLRequest(movies[evt.currentTarget.id]);
    addChild(carica);
    (carica, topPosition);

    if(carica!=null){
    carica.unload();
    trace(evt.currentTarget.id);
    carica.load(trova);
    addChild(carica);

    }

    }

    il bello è ke nell'output non trovo alcun errore, dove sto sbagliando???

  8. #8
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao

    Il setChildIndex non funziona perchè hai messo i suoi parametri ma non hai messo la parola chiave che è appunto setChildIndex.
    Quindi quella riga di codice và completata così:

    Codice PHP:
    setChildIndex(caricatopPosition); 
    Poi hai messo un addChild(carica); prima della condizione if che valuta se esiste un filmato caricato in precedenza, se esiste rimuove tale filmato e aggiunge quello nuovo:

    Codice PHP:
    if (carica != null)
        {
            
    carica.unload();
            
    trace(evt.currentTarget.id);
            
    carica.load(trova);
            
    addChild(carica);

    E' qui che devi mettere il setChildIndex o lo swapChildren per controllare su quale livello viene caricato il file.
    Altra cosa importante è mettere tutti i pulsanti in un'unico MovieClip in modo che tutti i pulsanti siano sullo stesso livello.

    In questo esempio ho messo i 3 pulsanti in un MovieClip posizionato sullo stage e con il suo nome istanza "menu" quindi ho modificato il contenuto dell'Array "buttons" come ho scritto sopra:

    Codice PHP:
    var num:int;
    var 
    movies:Array = new Array("movies/uno.swf","movies/due.swf","movies/tre.swf");
    var 
    buttons:Array = new Array(menu.p1,menu.p2,menu.p3);
    var 
    carica:Loader=new Loader();
    var 
    topPosition:uint numChildren 1;

    for (var 
    i:int=0i<movies.lengthi++)
    {
        
    buttons[i].buttonMode true;
        
    buttons[i].addEventListener(MouseEvent.CLICK,vai);
        
    buttons[i].id i;
    }
    function 
    vai(evt:MouseEvent):void
    {
        var 
    trova:URLRequest = new URLRequest(movies[evt.currentTarget.id]);
        
        if (
    carica != null)
        {
            
    carica.unload();
            
    carica.load(trova);
            
    addChild(carica);
            
    setChildIndex(caricatopPosition);
          }

    Come puoi vedere ho cambiato un pò l'ordine delle chiamate e ho eliminato quella funzione "fotogramma" perchè non ho capito a cosa serve e facendo riferimento a un'etichetta fotogramma che non avevo mi dava errore.
    Puoi scaricare il file di esempio da QUI

    ciao

    x Randi: seee ... mi immagino che cose incredibili fa la tua nonna con Flash !
    ... e poi, il codice per il setChildIndex non l'ho fatto io ma è un'elaborazione da un'esempio che si trova nella giuda ActionScript della Adobe quindi tutto il merito và agli ingegnieri della Adobe che ci hanno pensato e l'hanno incluso nel programma.

    un salutone e alla prossima

  9. #9
    al momento mi sono fratturato e non ho potuto mettere mano al codice e neanke ringraziarti x la pronta risposta. Appena apporterò le dovute modifike nn mankerò di farti sapere

  10. #10
    ho avuto modo di applicare lo script e funziona ti ringrazio.
    il mio errore è stato non aver inserito il tutto su di un frame cosicchè anche i video richiamati al click del mouse dopo un ciclo si sovrapponevano.
    altro errore è stato non aver convertito i vari oggetti come movie clip.
    ora si ke è pulito e corretto

    non so se devo aprire un altro tread o servirmi di questo per un ulteriore consiglio:
    al momento sto elaborando 8 movie clip esterni ke vengono richiamati su quello principale (come da as sopra).

    sul primo frame di tutti i movie clip ho questa as:

    stop ();

    import fl.transitions.Tween;
    import fl.transitions.easing.*;
    var homeTween:Tween=new Tween(bio_mc, "alpha",Regular.easeOut,0,1,3,true);

    fin qui funziona tutto ma mi chiedevo se è possibile assegnare questa as nel clip ke rikiama i movies esterni invece di assegnarla per ogni singolo clip.
    ke ne dite???

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.