Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Trigonometria con Actionscript 3.0 esempio 2

This is a discussion on Trigonometria con Actionscript 3.0 esempio 2 within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Eccoci quà ! Siamo tornati sulla trigonometria ( molto affascinante eh... ) Questo articolo è la seconda, ma non ultima, parte dell' articolo Trigonometria ...


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, 10:45
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 2

Eccoci quà ! Siamo tornati sulla trigonometria ( molto affascinante eh... )

Questo articolo è la seconda, ma non ultima, parte dell' articolo Trigonometria con Actionscript 3.0 [esempio 1].

Questa volta applicherò la trigonometria all' effetto spring visto in questo articolo.


Entriamo subito nel vivo...


Creo un FLA che salvo con nome ' trigonometria_2.fla ' al cui interno:

-creo una MovieClip con forma a piacere ( si tratta solo di un esempio ) a cui assegno nome istanza '.stella_mc '.

-creo un' altra MovieClip che chiamo ' freccia_mc ' ( in questo caso a forma di freccia ) e che istanzio 2 volte assegnado nomi istanze ' freccia_0_mc ' e ' freccia_1_mc '


Creo la Document Class, un file AS che salvo con nome ' TrigoDue.as ', implementata in questo modo:


Code:
package
{
	import flash.display.MovieClip;
	import flash.events.Event;
	
	public class TrigoDue extends MovieClip
	{
		private var angle:Number=0;
		private const raggio:int=100;
		
		public function TrigoDue()
		{
			init();
		}
		
		private function init():void
		{
			stage.frameRate=31;
			
			stella_mc.x=stage.stageWidth/2;
			stella_mc.y=stage.stageHeight/2;
			
			stella_mc.addEventListener(Event.ENTER_FRAME,muovi);
		}
		
		private function muovi(e:Event):void
		{
			e.target.y=stage.stageHeight/2+Math.sin(angle)*raggio;
			e.target.x=stage.stageWidth/2+Math.sin(angle)*raggio;
			var dx_0:Number=e.target.x-freccia_0_mc.x;
			var dy_0:Number=e.target.y-freccia_0_mc.y;
			var radians:Number=Math.atan2(dy_0,dx_0);
			freccia_0_mc.rotation=(radians/Math.PI)*180;
			var dx_1:Number=e.target.x-freccia_1_mc.x;
			var dy_1:Number=e.target.y-freccia_1_mc.y;
			var radians2:Number=Math.atan2(dy_1,dx_1);
			freccia_1_mc.rotation=(radians2/Math.PI)*180;
			angle+=.1;
		}
	}
}
Risultato:










Analizziamo il codice:

Proprietà:
una variabile numerica che contiene il valore dell' angolo
private var angle:Number=0;
una costante numerica chiamata raggio a cui assegno il valore di 100 ( sarà il raggio azione di stella_mc )
private const raggio:int=100;

init();
dichiaro una velocità di frame rate
stage.frameRate=31;
posiziono stella_mc
stella_mc.x=stage.stageWidth/2;
stella_mc.y=stage.stageHeight/2;
assegno un listener in ascolto di ENTER_FRAME che chiama muovi()
stella_mc.addEventListener(Event.ENTER_FRAME,muovi );


muovi();
ricordiamoci che siamo all' interno di un intervallo ( ENTER_FRAME ), per cui questo metodo verrà eseguito tante volte al secondo per quanto è il valore del frame rate
e.target è chi ha dispacciato l' evento, in questo caso stella_mc
assegno alla x di stella_mc un valore che è la metà dell' altezza dello stage + il seno dell' angolo ( variabile ' angle ' che ancora è zero ) moltiplicato per il valore della costante raggio
e.target.x=stage.stageWidth/2+Math.sin(angle)*100;
assegno alla y di stella_mc un valore che è la metà della larghezza dello stage + il seno dell' angolo ( variabile ' angle ' che ancora è zero ) moltiplicato per il valore della costante raggio
e.target.y=stage.stageHeight/2+Math.sin(angle)*100;
creo 2 variabili numeriche che contengono il valore della differenza tra le coordinate di stella_mc e freccia_0_mc
var dx_0:Number=e.target.x-freccia_0_mc.x;
var dy_0:Number=e.target.y-freccia_0_mc.y;
calcolo i radianti tra i valori delle due variabili appena create ( vedi questo articolo )
var radians:Number=Math.atan2(dy_0,dx_0);
assegno i gradi ( ottenuti dalla forumla matematica di conversione radianti / gradi ) alla rotation di freccia_0_mc
freccia_0_mc.rotation=(radians/Math.PI)*180;
stessa cosa per freccia_1_mc
var dx_1:Number=e.target.x-freccia_1_mc.x;
var dy_1:Number=e.target.y-freccia_1_mc.y;
var radians2:Number=Math.atan2(dy_1,dx_1);
freccia_1_mc.rotation=(radians2/Math.PI)*180;
incremento il valore di angle di 0,1
angle+=.1;

Stay tuned !
__________________

 


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 4 Flep Articoli e tutorials 0 20-09-07 15:04
Trigonometria con Actionscript 3.0 esempio 3 Flep Articoli e tutorials 0 20-09-07 14:04


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


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