+ Reply to Thread
Results 1 to 6 of 6

Chiamare un metodo della Document Class da un pulsante sullo stage.

This is a discussion on Chiamare un metodo della Document Class da un pulsante sullo stage. within the Actionscript 3.0 base forums, part of the Flash Italiano category; Salve a tutti ragazzi, ho un problemino, non riesco a chiamare un metodo dalla Document Class da un pulsante posizionato ...

  1. #1
    Junior Member Settled In interrupt is on a distinguished road
    Join Date
    Jul 2007
    Posts
    25
    Rep Power
    0

    Chiamare un metodo della Document Class da un pulsante sullo stage.

    Salve a tutti ragazzi, ho un problemino, non riesco a chiamare un metodo dalla Document Class da un pulsante posizionato sullo stage, praticamente questa è la mia DC:
    Code:
    package
    {	
    	import flash.display.MovieClip;	
    	import flash.events.*;
    	
    	public class Main extends MovieClip	
    	{
    		
    		
    		public function Main()		
    		{			
    			trace('Classe instanziata, totale frame:');			
    			trace(this.totalFrames);			
    		}	
    		
    
    		
    		public function HomePremuto(e:MouseEvent):void
    		{
    			corpo della funzione
    		}
    		
    	}
    }
    a questo punto, tenendo presente che il pulsante che ho sullo stage l'ho chiamato HomeBtn, ho aggiunto al frame dove si trova il pulsante il seguente codice:
    Code:
    stop();
    trace(this);
    var m = this;
    
    HomeBtn.addEventListener (MouseEvent.CLICK, m.HomePremuto);
    Quando faccio trace(this), mi da come risultato: "Main" che è la mia document class, ma non riesco ad assegnare la funzione HomePremuto al pulsante :(
    Com'è possibile??
    Quando eseguo mi dice: "impossibile fare riferimento ad oggetto null" o qualcosa del genere :(

    Help Please!

  2. #2
    Graphic Designer Flash Addict Sirwis is on a distinguished road Sirwis's Avatar
    Join Date
    Jan 2008
    Posts
    50
    Rep Power
    6

    Re: Chiamare un metodo della Document Class da un pulsante sullo stage.

    Infatti qualcosa sbagli e quel qualcosa risiede nel "luogo" dove hai aggiunto il listener (non si è capito minimamente dove hai messo quel codice e non vogliamo saperlo ).

    Guarda qua:

    Code:
    package//document Class
    {	
    	import flash.display.MovieClip;	
    	import flash.events.*;
    	
    	public class Main extends MovieClip	
    	{
    		
    		//costruttrice
    		public function Main()		
    		{			
    		        //Aggiungo i fidati ascoltatori al mio pulsante
                           home_btn.addEventListener (MouseEvent.MOUSE_OVER, btnHomeRollOver);
    			home_btn.addEventListener (MouseEvent.MOUSE_OUT, btnHomeRollOut);
    			home_btn.addEventListener (MouseEvent.MOUSE_DOWN, btnHomePremuto);			
    		}	
    		
    		
    		public function btnHomePremuto(e:MouseEvent):void
    		{
    			
    		}
    		
    	}
    }
    In questo modo funzionerà senza problemi. Se vuoi fare in modo che un pulsante utilizzi delle funzioni della document class devi semplicemente aggiungere un ascoltatore dalla stessa nella funzione costruttrice o nella funzione init o in un'altra funzione, che ne so un'ipotetica setup.

    Questo vale per tutte le classi, naturalmente.

    Nel caso di path lunghi, ti consiglio di creare una variabile movieclip a cui assegnare quel determinato MC, per comodità

  3. #3
    Junior Member Settled In interrupt is on a distinguished road
    Join Date
    Jul 2007
    Posts
    25
    Rep Power
    0

    Riferimento: Chiamare un metodo della Document Class da un pulsante sullo stage.

    Ok, grazie mille per la risposta, sei gentilissimo, ma così come mi hai descritto funziona solo se i pulsanti sono visibili al primo fotogramma, giusto?
    A me, invece, i pulsanti appaiono molto dopo, per capirci al fotogramma 47.
    :\
    Ho pensato di mettere tutto in una funzione "setup", come dicevi tu, e di chiamare la funzione setup al frame 47, ma niente... :\
    non va... :(

  4. #4
    Graphic Designer Flash Addict Sirwis is on a distinguished road Sirwis's Avatar
    Join Date
    Jan 2008
    Posts
    50
    Rep Power
    6

    Re: Chiamare un metodo della Document Class da un pulsante sullo stage.

    Perché semplicemente non fai un:

    Code:
    [...]
    
        home_btn.visible = false;
    
    [...]
    E arrivato al fotogramma 47 o quel che sarà lo rendi nuovamente visibile e ne esegui l'animazione di comparsa? Anche io ragionavo così fino a quando sono passato ad AS3, da qua ho capito che la timeline è ormai relegata al passato .

    Meno timeline, più codice figlioli.

  5. #5
    Junior Member Settled In interrupt is on a distinguished road
    Join Date
    Jul 2007
    Posts
    25
    Rep Power
    0

    Riferimento: Chiamare un metodo della Document Class da un pulsante sullo stage.

    mmm, ci provo e ti faccio sapere... ;)

  6. #6
    Junior Member Settled In interrupt is on a distinguished road
    Join Date
    Jul 2007
    Posts
    25
    Rep Power
    0

    Riferimento: Chiamare un metodo della Document Class da un pulsante sullo stage.

    WoW funziona alla grande!
    Grazie mille, in questo modo posso avere sotto controllo tutto dalla Document Class :)
    Grazie Sirwis :)

+ Reply to Thread

Similar Threads

  1. indexOf - metodo della classe Array
    By Flep in forum Articoli e tutorials
    Replies: 4
    Last Post: 10-04-12, 01:27
  2. Come chiamare un'altra Classe dalla Document Class
    By Flep in forum Articoli e tutorials
    Replies: 39
    Last Post: 05-10-10, 10:43
  3. classe timer, chiamare palloncini sullo stage
    By ArwenUndomiel in forum Actionscript 3.0 avanzato
    Replies: 1
    Last Post: 21-10-09, 13:01
  4. Astensione della MovieClip con metodo che non funziona
    By Donovant in forum Actionscript 3.0 base
    Replies: 1
    Last Post: 08-11-08, 12:06
  5. Metodo splice della classe Array
    By Flep in forum Articoli e tutorials
    Replies: 1
    Last Post: 18-06-08, 21:51

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts