Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Trigonometria con Actionscript 3.0 esempio 4

This is a discussion on Trigonometria con Actionscript 3.0 esempio 4 within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Ecco un altro esempio che prosegue nel tema della trigonometria applicata ad Actionscript. Lato codice, niente che non sia già ...


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:04
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Trigonometria con Actionscript 3.0 esempio 4

Ecco un altro esempio che prosegue nel tema della trigonometria applicata ad Actionscript.
Lato codice, niente che non sia già stato pubblicato in questo blog.
' Attacco ' delle MovieClip in runtime come nell' articolo ex attachMovie alle quali applico della trigonometria che abbiamo già visto nel primo articolo Trigonometria applicata ad Actionscript 3.0.
Ne nasce un simpatico effetto ed è inutile dire che chi più ne ha più ne metta ! ( di fantasia ) :))










Creo un FLA, che salvo con nome ' trigonometria_4.fla ', al cui interno creo una MovieClip assegnandogli il nome di ' mc_triangolo '.
Click destro su ' mc_triangolo ' in libreira e gli assegno come identificatore Triangolo ( una classe che sto per scrivere ).
Creo la Document Class, un file AS che salvo con nome ' Trigo4.as ', implementata in questo modo:
Code:
package
{
	import flash.display.MovieClip;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
	
	public class Trigo4 extends MovieClip
	{
		public var container_mc:MovieClip;
		
		private var timer:Timer;
		
		public function Trigo4()
		{
			init();
		}
		
		private function init():void
		{
			stage.frameRate=31;
			
			createContainer();
			goTimer();
		}
		
		private function createContainer():void
		{
			container_mc=new MovieClip();
			addChild(container_mc);
		}
		
		private function goTimer():void
		{
			timer=new Timer(20,0);
			timer.addEventListener(TimerEvent.TIMER,attachClip);
			timer.start();
		}
		
		private function attachClip(t:TimerEvent):void
		{
			var triangolo:Triangolo=new Triangolo(this);
			container_mc.addChild(triangolo);
		}
	}
}
Adesso creo la classe Triangolo, un file AS che salvo con nome ' Triangolo.as ' :
Code:
package
{
	import flash.display.MovieClip;
	import flash.events.Event;
	
	public class Triangolo extends MovieClip
	{
		private var Root:MovieClip;
		
		private var speed:Number;
		
		public function Triangolo(m:MovieClip)
		{
			Root=m;
			
			init();
		}
		
		private function init():void
		{
			speed=2+Math.random()*20;
			
			x=-width;
			y=Math.random()*Root.stage.stageHeight;
			alpha=speed/20;
			scaleX=.5+speed/20;
			scaleY=scaleX;
			
			addEventListener(Event.ENTER_FRAME,go);
		}
		
		private function go(e:Event):void
		{
			x+=speed;
			var dx:Number=x-Root.mouseX;
			var dy:Number=y-Root.mouseY;
			var radianti:Number=Math.atan2(dy,dx);
			rotation=(radianti/Math.PI)*180;
			
			if(x>=Root.stage.stageWidth+width)
			{
				removeEventListener(Event.ENTER_FRAME,go);
				Root.container_mc.removeChild(this);
			}
		}
	}
}
Analizziamo il codice

Classe Trigo4

Proprietà

una MovieClip che funge da contenitore di tutte le altre MovieClipche ' attaccherò '
public var container_mc:MovieClip;
un timer
private var timer:Timer;

Metodi
init();
imposto una velocità di frame rate
stage.frameRate=31;
chiamo il metodo createContainer()
createContainer();
chiamo il metodo goTimer()
goTimer();

createContainer();
istanzio container_mc come nuova MovieClip
container_mc=new MovieClip();
aggiungo container_mc al DisplayObject ( altrimenti non sarebbe visibile )
addChild(container_mc);

goTimer();
istanzio un nuovo timer passandogli i valori : 20 come velocità dell'intervallo e 0 come infinito
timer=new Timer(20,0);
aggiungo un listener al timer che all'evento TIMER chiama la funzione attachClip()
timer.addEventListener(TimerEvent.TIMER,attachClip );
faccio partire il timer
timer.start();

attachClip();
istanzio la classe Triangolo, pasandogli il valore this ( in questo caso è riferito alla ex _root di Actionscript 2.0 )
var triangolo:Triangolo=new Triangolo(this);
dato che la classe Triangolo estende la classe MovieClip, aggingo l'istanza della classe Triangolo ( triangolo ) al DisplayObject o non sarebbe visibile
container_mc.addChild(triangolo);



Classe Triangolo

Proprietà

una variabile MovieClip a cui assegno ( nella funzione costruttrice ) il valore della root che arriva dalla classe Trigo4
private var Root:MovieClip;
una variabile numerica
private var speed:Number;

Metodi
init();
assegno alla variabile speed un valore random tra il 2 e il 20 ( escluso )
speed=2+Math.random()*20;
assegno alla proprietà x ( dato che siamo all' interno di triangolo_mc che abbiamo nella libreria di trigonometria_4.fla, x=... è riferito a lei, quindi ad ogni istanza di Triangolo.as che la classe Trigo4 crea ) il valore negativo del width
x=-width;
assegno alla proprietà y un numero random che va da 0 alla massima altezza dello Stage
y=Math.random()*Root.stage.stageHeight;
assegno alla proprietà alpha un valore pari al valore di speed meno 20
alpha=speed/20;
assegno alla proprietà scaleX un valore pari a 0,5 + il valore di speed diviso 20
scaleX=.5+speed/20;
imposto laproprietà scaleY uguale ascaleX
scaleY=scaleX;
aggiungo unintervallo ENTER_FRAME che chiama la funzione go ( tante volte al secondopari al numero del frame rate )
addEventListener(Event.ENTER_FRAME,go);

go();
incremento la x del valore di speed
x+=speed;
applico la trigonometria di base vista nell' articolo :Trigonometria con Actionscript 3.0 [esempio 1]
var dx:Number=x-Root.mouseX;
var dy:Number=y-Root.mouseY;
var radianti:Number=Math.atan2(dy,dx);
rotation=(radianti/Math.PI)*180;
se la x è maggiore della largezza dello Stage più il width di questa clip
if(x>=Root.stage.stageWidth+width)
{
fermo l' intervallo di questa clip
removeEventListener(Event.ENTER_FRAME,go);
vi ricordate container_mc ? Gli dico di eliminare questa clip
Root.container_mc.removeChild(this);
}

Bello no ?! :)
__________________

 


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
Trigonometria con Actionscript 3.0 esempio 1 Flep Articoli e tutorials 11 30-08-08 11:11
Trigonometria esempio 6 - movimento rotatorio e direzione Flep Articoli e tutorials 0 12-11-07 06:41
Trigonometria con Actionscript 3.0 esempio 5 Flep Articoli e tutorials 0 21-09-07 11:03
Trigonometria con Actionscript 3.0 esempio 3 Flep Articoli e tutorials 0 20-09-07 14:04
Trigonometria con Actionscript 3.0 esempio 2 Flep Articoli e tutorials 0 20-09-07 10:45


All times are GMT. The time now is 10:41.


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