Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Operatore is di Acstionscript 3.0

This is a discussion on Operatore is di Acstionscript 3.0 within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Salve a tutti ! Vi ricordate dell' operatore ' instanceof ' di Actionscript 2.0 ? Non è stato rimosso, ma Adobe consiglia di usare ...


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 links from elsewhere to this Post. Click to view. #1 (permalink)  
Old 05-10-07, 06:41
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,446
Rep Power: 6
Flep is on a distinguished road
Operatore is di Acstionscript 3.0

Salve a tutti !

Vi ricordate dell' operatore ' instanceof ' di Actionscript 2.0 ?
Non è stato rimosso, ma Adobe consiglia di usare l' operatore ' is ' con Actionscript 3.0 e Flash CS3.
A cosa serve ?
Direi che è molto utile in situazioni nelle quali bisogna sapere che tipo di oggetti ci sono all' interno di una MovieClip.
Ad esempio, mi è capitato durante lo sviluppo di un carrello per un e-commerce.
Dovevo separare ad un dato evento le MovieClip dai bottoni, dai campi di testo e addirittura dalle Shape.


Vediamo insieme come fare...

Creo un FLA che salvo con nome ' main.fla '.
Al suo interno creo una MovieClip vuota che trascino sullo stage assegnandole nome istanza ' container_mc '.
All' interno di container_mc creo delle altre MovieClip, campi di testo, bottoni e simboli grafici.
Quanti ne voglio e del tipo che volgio, come ad esempio:






Adesso creo la Document Class, un file AS che salvo con nome ' Main.as ', implementata in questo modo:
Code:
package
{
	import flash.display.MovieClip;
	import flash.display.SimpleButton;
	import flash.display.Shape;
	import flash.text.TextField;
	
	public class Main extends MovieClip
	{
		public function Main()
		{
			countAndSeparate();
		}
		
		private function countAndSeparate():void
		{
			for(var i:int=0;i < container_mc.numChildren;i++)
			{
				if(container_mc.getChildAt(i) is MovieClip)
				{
					var clip:MovieClip=container_mc.getChildAt(i) as MovieClip;
					trace('io sono una MovieClip e il mio nome è: '+clip.name);
				}
				if(container_mc.getChildAt(i) is TextField)
				{
					var field:TextField=container_mc.getChildAt(i) as TextField;
					trace('io sono una TextField e il mio nome è: '+field.name);
				}
				if(container_mc.getChildAt(i) is SimpleButton)
				{
					var button:SimpleButton=container_mc.getChildAt(i) as SimpleButton;
					trace('io sono una SimpleButton e il mio nome è: '+button.name);
				}
				if(container_mc.getChildAt(i) is Shape)
				{
					var shape:Shape=container_mc.getChildAt(i) as Shape;
					trace('io sono una Shape e il mio nome è: '+shape.name);
				}
			}
		}
	}
}
ed ottengo il seguente output:

Quote:
io sono una MovieClip e il mio nome è: clip_0_mc
io sono una MovieClip e il mio nome è: clip_1_mc
io sono una MovieClip e il mio nome è: clip_2_mc
io sono una MovieClip e il mio nome è: clip_3_mc
io sono una MovieClip e il mio nome è: clip_4_mc
io sono una MovieClip e il mio nome è: clip_5_mc
io sono una TextField e il mio nome è: field_0_txt
io sono una SimpleButton e il mio nome è: button_0_btn
io sono una SimpleButton e il mio nome è: button_1_btn
io sono una TextField e il mio nome è: field_1_txt
io sono una TextField e il mio nome è: field_3_txt
io sono una TextField e il mio nome è: field_2_txt
io sono una SimpleButton e il mio nome è: button_2_btn
io sono una Shape e il mio nome è: instance7
io sono una Shape e il mio nome è: instance8
io sono una Shape e il mio nome è: instance9
Analizziamo il codice

creo un ciclo con massima iterazione il numero dei figli di container_mc
for(var i:int=0;i < container_mc.numChildren;i++)

usando container_mc.getChildAt(i), rintraccio un figlio di container_mc in base all' itreazione del ciclo (i) e co l' operatore is, chiedo a Flash di che tipo è l' oggetto trovato
if(container_mc.getChildAt(i) is MovieClip)
if(container_mc.getChildAt(i) is TextField)
if(container_mc.getChildAt(i) is SimpleButton)
if(container_mc.getChildAt(i) is Shape)

ad ogni condizione trovata, creo una variabile locale dello stesso tipo che la condizione if ha trovato in quel momento e gli assegno l' istanza
var clip:MovieClip=container_mc.getChildAt(i) as MovieClip;
var field:TextField=container_mc.getChildAt(i) as TextField;
var button:SimpleButton=container_mc.getChildAt(i) as SimpleButton;
var shape:Shape=container_mc.getChildAt(i) as Shape;

eseguo il trace chiedendo il nome dell' istanza trovata
trace('io sono una MovieClip e il mio nome è: '+clip.name);
trace('io sono una TextField e il mio nome è: '+field.name);
trace('io sono una SimpleButton e il mio nome è: '+button.name);
trace('io sono una Shape e il mio nome è: '+shape.name);

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


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


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