• User Newbie

    Bottone per cambio frame

    Salve a tutti, sono da poco alle prese con flash (con l'ausilio di flashdevelop per scrivere il codice) in actionscript 3.
    Mi sono arenato ad un problema, ho una stage di class "main".
    Ho un pulsante generico che ho creato dalla mia librearia "mybutton".
    L'istanza di questo preciso bottone l'ho chiamata "insertNazionale".
    Vado in Flash Develop e scrivo:

    
    public class main extends MovieClip 
    	{
    		public function main() 
    		{
    			trace("prova");
    		}
    		
    		public function insertNazionale(m:MouseEvent)
    		{
    			trace("carta nazionale inserita");
    			this.gotoAndStop(2);
    		}
    		
    	}
    

    Il pulsante dovrebbe portarmi al secondo frame, giusto? (già creato nel flash che stò utilizzando) E invece non lo fa, quando clicco sul pulsante non succede nulla. Cosa sbaglio?
    Grazie a chiunque voglia aiutarmi e scusate per la domanda un pò nabba.


  • Super User

    Ciao benvenuto sul forum GT, ma questo codice lo hai messo in una classe (file as) o lo hai messo nel fla?


  • User Newbie

    L'ho messo nel codice as (che uso in flash develop)


  • Super User

    Mi spiego meglio, ci sono due modi per "posizionare il codice" o lo si scrive in un file estensione as che verra collegato al file estensione fla, o lo si scrive direttamnete nel file fla, ora il codice che hai postato ha tutta l'aria di essere una classe da file as, ma in questo caso è incompleta, manca il pakage è bisogna importare alcune cose tipo gli events, poi manca il listener per far funzionare il pulsante. Quindi volevo una descrizione più precisa, se il codice lo hai messo in un file as è da completare, se lo hai messo nel fla non va bene.
    Se hai creato un fla con con la grafica e un as con il codice il file codice andrebbw completato così

    
     package {
        import flash.display.*;
        import flash.events.*;
    public class main extends MovieClip 
        {
            public function main() 
            {
                trace("prova");
            }
            
            public function insertNazionale(m:MouseEvent)
            {
                trace("carta nazionale inserita");
                this.gotoAndStop(2);
            }
            
        }
    }
    
    

    mentre nel fla bisognerebbe mettere il codice per caricare il bottone dalla dalla libreria più il listener.

    
    stop()
    var btn_Nazionale:mybutton = new mybutton
    addChild(btn_Nazionale)
    btn_Nazionale.addEventListener(MouseEvent.CLICK,insertNazionale)
    
    

  • User Newbie

    Ok innanzitutto grazie per la risposta, vediamo un pò:

    package  
    {
    	import flash.display.MovieClip;
    	import flash.events.MouseEvent;
    	
    	/**
    	 * ...
    	 * @author Ale
    	 */
    	public class main extends MovieClip 
    	{
    		
    		public function main() 
    		{
    			super();
    			trace("prova");
    		}
    		
    		public function insertNazionale(m:MouseEvent)
    		{
    			trace("carta nazionale inserita");
    			this.gotoAndStop(2);
    		}
    	}
    
    }
    

    Questo è il codice che ho in as (che uso con flash develop)
    In flash invece ho la mia bella interfaccia con 2 frame, nella prima un pulsante (nome istanza "nazionale") che mi dovrebbe portare al secondo frame.
    Nel mio flash ho un livello con tutta la grafica, uno invece delle actions e in questo (premendo F9 per intenderci) ho scritto:

    stop();
    
    nazionale.addEventListener(MouseEvent.CLICK, insertNazionale);
    

    Il punto ora è che quando vado ad eseguire (tramite flash develop il file as, mi fa partire in loop i due frame, è come se ignorasse lo stop, quindi non posso capire nemmeno se funziona questo benedetto pulsante. Nel log degli errori mi compare che in riga 3, quindi quella che dice "nazionale.addEventListener(MouseEvent.CLICK, insertNazionale);" c'è l'errore 1120: Access of undefined property insertNazionale.
    Se invece inserisco IN FLASH questa funzione tutto funziona (ma quindi mi ignora l'as sembrerebbe:

    function insertNazionale(event:MouseEvent)
    {
    	gotoAndStop(2);
    }
    

    Ps. Non ho capito anche, perchè nel fla dici di inserire queste stringhe:

    var btn_Nazionale:mybutton = new mybutton
    addChild(btn_Nazionale)
    

    che si riferiscono, credo alla creazione dell'istanza "btn_Nazionale" andando a prendere dalla libreria "mybutton".