Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Trucco del giorno - istanza fantasma

This is a discussion on Trucco del giorno - istanza fantasma within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Eccoci ancora una volta ad affrontare un trucchetto che può servire a noi actionscripters incalliti. Questa volta voglio trattare un ...


Go Back   Forum Flash CS3 Flash CS4 > Flash CS3 e Actionscript 3.0 > Articoli e tutorials

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 20-09-07, 15:24
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,446
Rep Power: 6
Flep is on a distinguished road
Trucco del giorno - istanza fantasma

Eccoci ancora una volta ad affrontare un trucchetto che può servire a noi actionscripters incalliti.
Questa volta voglio trattare un argomento riguardante la chiamata di funzioni da un evento, le quali pretendono come parametro l' istanza dell' oggetto che ha dispacciato l' evento anche se volessimo chiamare la suddetta funzione senza lo scaturirsi di un evento.
E' poco piacevole e direi non ' educato ' dover riscrivere un' altra medesima funzione ma senza implementare quel parametro richiesto.
Questo ' problemino ' potrebbe capitare spesso utilizzando la Classe Timer di Actionscript 3.0 oppure lavorando con eventi del mouse.
Seguitemi ed entriamo in un esempio pratico...

Mettiamo il caso che stiamo utilizzando la classe Timer per richiamare una funzione ogni 5 secondi, in questo modo:
Code:
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;

var id:int=0;
var timer:Timer=new Timer(5000,0);
timer.addEventListener(TimerEvent.TIMER,go);
timer.start();

function go(t:TimerEvent):void
{
	id++;
	trace(id);
}
Come possiamo vedere, quello script chiama la funzione go ogni secondi.
Però quando lanciamo l' swf non succede nullaper 5 secondi. Mettiamo che quella funzione go sia una funzione che chiama una immagine a rotazione ogni 5 secondi, alla pubblicazione dell' SWF avremmo un tempo morto appunto di 5 secondi, per cui di primo istinto ci verrebbe di chiamarla subito in modo che esegua il codice senza aspettare i 5 secondi di intervallo e poi il timer proseguirebbe nel suo cammino... ma ! non è così ! In quanto se noi aggiungiamo:

go() ;

subito prima di istanziare il timer, riceviamo un errore da Flash che dice che c'è un errato numerodi argomenti alla chiamata della funzione go, e in effetti la funzione go vuole una istanza della classe TimerEvent.

A questo punto suggerisco di fare in questo modo:
Code:
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;

var id:int=0;
var fantasma:TimerEvent;
go(fantasma);
var timer:Timer=new Timer(5000,0);
timer.addEventListener(TimerEvent.TIMER,go);
timer.start();

function go(t:TimerEvent):void
{
	id++;
	trace(id);
}
Come vediamo, ho creato un'istanza della Classe TimerEvent e senza inizializzarla l' ho passata alla funzione go.

Questo potrebbe accadere anche quando lavoriamo con funzioni che vengono chiamate dallo scaturirsi di un evento ( tipo MOUSE_DOWN della classe MouseEvent ) del mouse e necessitassimo di chiamare la stessa funzione anche senza lo scaturirsi di un evento.

Alla Prossima !
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

Similar Threads

Thread Thread Starter Forum Replies Last Post
this.root - trucco del giorno Flep Articoli e tutorials 8 10-10-08 16:43
Trucco del giorno - MovieClip.dropTarget Flep Articoli e tutorials 3 04-09-08 10:37
Trucco del giorno - Loader.content Flep Articoli e tutorials 7 29-06-08 16:24
Trucco del giorno - DisplayObjectContainer.removeChildAt Flep Articoli e tutorials 1 08-06-08 17:43
Trucco del giorno - MovieClip.mouseChildren Flep Articoli e tutorials 0 21-09-07 10:46


All times are GMT. The time now is 15:32.


Powered by vBulletin versione 3.7.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0 RC4
Forum SiteMap


FlepStudio
by Filippo Lughi
P.IVA 03605860406