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

    Pulsanti diversi aprono movieclip diversi.

    Ciao, spero possiate aiutarmi a risolvere il problema ke ormai mi tiene sveglia anke la notte . Premetto ke è da poco tempo ke sono passata all'AS3 e quindi sto dovendo "tradurre" i precedenti siti in AS2. Le mie competenze sono ancora limitate, xò.
    Il mio problema riguarda la possibilità ke pulsanti diversi (si tratta di icone di immagini diverse) dovrebbero aprire movieclip diversi contenenti ciascuno un'immagine e del testo. Ho provato in mille modi ma riesco ad ottenere sempre l'unico risultato di far spuntare sullo stage tutti i movieclip in una volta, anzikkè uno alla volta a seconda del pulsante cliccato.
    Di seguito vi invio il codice da me inserito nel file *.fla.

    CODICE AS3:

    stop();

    var button:bottone01=new bottone01();
    var button2:bottone02=new bottone02();

    var button3:bottone03=new bottone03();
    var button4:bottone04=new bottone04();

    var pag1agina1=new pagina1();
    var pag2agina2=new pagina2();
    var pag3agina3=new pagina3();
    var pag4agina4=new pagina4();


    var menu:Array=new Array(button,button2,button3,button4);

    var pagine:Array=new Array(pag1,pag2,pag3,pag4);


    var idpagina:int;

    function init():void
    {


    for (var t=0; t<menu.length; t++)
    {

    menu[t].name="bottone01"+t;
    menu[t].x=100;
    var vertGap:Number=10;

    menu[t].y=(menu[t].height + vertGap) * t;
    this.addChild(menu[t]);

    menu[t].mouseChildren=false;
    menu[t].buttonMode=true;
    menu[t].idpagina=t;
    menu[t].addEventListener(MouseEvent.MOUSE_OVER, setover);
    menu[t].addEventListener(MouseEvent.MOUSE_OUT, setout);
    menu[t].addEventListener(MouseEvent.MOUSE_DOWN, setclick);

    }

    }

    init();


    function setclick(event:MouseEvent)
    {

    trace("onClick: "
    + event.currentTarget.name);
    cambiopagina();

    }

    function cambiopagina():void
    {

    for (var i=0; i<pagine.length; i++)
    {

    menu.idpagina=pagine.idpagina;

    if (idpagina==i)
    {
    this.addChild(pagine[i]);


    } else
    {
    //this.removeChild(pagine[i]);
    pagine[i].visible=false;// lo nascond0
    }

    }

    }


    function setover(event:MouseEvent)
    {
    event.currentTarget.x+=5;
    }

    function setout(event:MouseEvent)
    {
    event.currentTarget.x-=5;
    }


    Spero qualcuno accolga la mia richiesta di aiuto

    marghe
    Margherita

  2. #2
    non conosco AS3 ma così a prima vista già nelle prime righe
    mi sembra che ci sia qualcosa nella sintassi che non va

    la tua
    var button:bottone01=new bottone01();

    sei certa che non si scriva
    var bottone01:button = new button;

    Sicuramente mi sbaglio io, però darei un'occhiata

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    No rempox, quello è corretto, è così che si fa l'attachMovie da libreria in AS3, il nome di concatenamento equivale al nome di una classe che rappresenta l'oggetto.
    Sarebbe come fare in AS2: this.attachMovie("bottone01", "button", this.getNextHighestDepth())

    Riguardo alla richiesta, ci sono un paio di cose che non mi tornano, la prima delle quali è su questa frase: "è da poco tempo ke sono passata all'AS3 e quindi sto dovendo "tradurre" i precedenti siti in AS2", immagino che si tratti di una libera scelta quella di tradurre in AS3, perchè altrimenti non ce ne sarebbe necessità considerato che i nuovi player leggono regolarmente anche gli swf più vecchi e con codice passato.

    Poi: "Il mio problema riguarda la possibilità ke pulsanti diversi (si tratta di icone di immagini diverse) dovrebbero aprire movieclip diversi contenenti ciascuno un'immagine e del testo. Ho provato in mille modi ma riesco ad ottenere sempre l'unico risultato di far spuntare sullo stage tutti i movieclip in una volta, anzikkè uno alla volta a seconda del pulsante cliccato."

    Non mi è chiaro come quello che scrivi qui vada in relazioni con il codice che hai postato, credo che sia meglio che pubblichi il fla per chiarire meglio la situazione ed aiutare ad aiutarti a risolverla.

  4. #4
    Ciao And grazie del chiarimento.

    Quindi sullo Stage vengono attaccati "button", "button2" ecc... mentre "bottone01", ecc sono i nomi dei concatenamenti all'interno della libreria .


    Rimango sintonizzato perchè non capisco questo passaggio


    menu[t].name="bottone01"+t;

    Ciao

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Quello neanch'io
    Cioè, è perfettamente lecito perchè in pratica in AS3 il parametro name non viene impostato di default con lo stesso nome di istanza, quando questa viene creata a runtime, e quindi lui/lei gli da un nome, che può servire se devi richiamare un clip usando la funzione getChildByName.

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Intanto mettiamo un po' d'ordine, poi vediamo quello che deve effettivamente accadare al click sul singolo pulsante.

    [edit] Forse ci sono, devi far comparire sullo stage una "pag" a seconda del pulsante che clicchi, e se ne clicchi un altro, quella deve scomparire e lasciare il posto alla nuova.
    In questo caso direi che il codice può essere questo:

    Codice PHP:
    stop();

    var 
    target:MovieClip addChild(new MovieClip()) as MovieClip;
    target.100;
    target.100;

    var 
    pages:Array = [new pagina1(), new pagina2(), new pagina3(), new pagina4()];

    var 
    idpagina:int 0;

    var 
    buttons:Array = [addChild(new bottone01()) as bottone01addChild(new bottone02()) as bottone02addChild(new bottone03()) as bottone03addChild(new bottone04()) as bottone04];
    buttons.forEach (forEachHandler);

    function 
    forEachHandler (element:*, index:uint, array:Array):void {
        
    element.name "bottone0" index;
        
    element.100;
        
    element.= (element.height 10) * index;
        
    element.mouseChildren false;
        
    element.buttonMode true;
        
    element.idpagina index;
        
    element.addEventListener(MouseEvent.MOUSE_OVERmouseHandlers);
        
    element.addEventListener(MouseEvent.MOUSE_OUTmouseHandlers);
        
    element.addEventListener(MouseEvent.MOUSE_DOWNmouseHandlers);
    }

    function 
    mouseHandlers (evt:MouseEvent):void {
        if (
    evt.type != MouseEvent.MOUSE_DOWN) {
            if (
    evt.type == MouseEvent.MOUSE_OVER) {
                
    evt.currentTarget.+= 5;
            } else {
                
    evt.currentTarget.-= 5;
            }
        } else {
            
    target.addChildAt(pages[evt.currentTarget.idpagina], 0);
        }


  7. #7
    Ciao and80, grazie x il codice ke mi hai postato. Lo proverò subito. Intanto ti kiarisco il mistero dei siti in as2 da tradurre in as3: in realtà il problema nn riguarda l'swf finale ma il fatto semplicissimo di aver installato la suite CS4. Quindi ke senso ha avere il programma aggiornato e poi usare ancora l'as2? Solo ke l'as3 è un po' + complesso di quanto mi aspettassi e quindi sono costretta a studiare mentre lavoro .
    Ti faccio sapere se risolvo il problema.
    Margherita

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Ok, quindi diciamo che li stai traducendo per studiare il nuovo linguaggio, è un buon allenamento, ma tieni sempre un backup dei siti in AS2

  9. #9
    Ciao and80, sono troppo contenta xchè hai risolto i miei problemi, credimi ke stavo quasi x mollare e darmi all'ippica .... e invece continuerò a studiare, e ad approfondire il linguaggio ovviam. Devo xò dirti ke il codice ke mi hai postato aveva uno strano comportam. con l'addChildAt. Cioè nel primo ciclo i 4 bottoni aprivano la 1 pagina e nel secondo giro il 1 bottone apriva la 2 pagina e così via, alterando l'ordine degli array. Ma la cosa strana è ke facendo la prova col trace(); in realtà tutto era xfetto, il primo bottone si riferiva alla 1 pagina e così via....Strano davvero. Quindi l'unica modifica ke ho apportato è :

    Codice PHP:
    else {         
    target.addChild(pages[evt.currentTarget.idpagina]);     

    Grazie di nuovo. E alla prox (mi prenoto sin da ora x ulteriori kiarim. ke sicuram. saranno necessari )

    Margherita

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Mmh, non ho capito bene cosa succede con il codice che ti ho postato, o meglio, ho capito che c'è una sorta di "spostamento" degli indici, ma è una cosa che non può succedere, salvo che magari non fai riavviare il filmato e quindi il codice viene riletto un'altra volta.

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.