Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Teorema di Pitagora con Actionscript 3.0

This is a discussion on Teorema di Pitagora con Actionscript 3.0 within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; In questo articolo vedremo come applicare il teorema di Pitagora ad Actionscript 3.0 . Questo teorema ci permette di calcolare ...


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
  4 links from elsewhere to this Post. Click to view. #1 (permalink)  
Old 20-09-07, 13:14
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Teorema di Pitagora con Actionscript 3.0

In questo articolo vedremo come applicare il teorema di Pitagora ad Actionscript 3.0 .
Questo teorema ci permette di calcolare la distanza in pixels tra 2 punti tenendo conto sia delle coordinate X , sia delle coordinate Y dei punti.
Il teorema ha diverse applicazioni pratiche quando si sviluppa con Flash, ma le vedremo più avanti nel corso degli articoli che pubblicherò su questo argomento.
Per ora soffermiamoci a capire come calcolare questa distanza.

Vediamo come...

Creo un FLA che salvo con nome ' pitagora.fla ', al cui interno posiziono due MovieClip ( di qualsiasi forma ) e alle quali assegno nomi istanze ' clip_0_mc ' e ' clip_1_mc ' .
Creo la Document Class, un file AS che salvo con nome ' Pitagora.as ', implementata in questo modo:
Code:
package
{
	import flash.display.MovieClip;
	import flash.text.TextField;
	
	public class Pitagora extends MovieClip
	{
		public function Pitagora()
		{
			calcolaDistanza();
		}
		
		private function calcolaDistanza():void
		{
			var distanzaX:Number=clip_0_mc.x-clip_1_mc.x;
			var distanzaY:Number=clip_0_mc.y-clip_1_mc.y;
			var distanza_reale:Number=Math.sqrt(distanzaX*distanzaX+distanzaY*distanzaY);
			
			distanza_txt.text=distanza_reale.toString();
		}
	}
}
Risultato:










Analizziamo il codice.
Il teorema di pitagora dice:
In ogni triangolo rettangolo la somma delle superfici dei quadrati costruiti sui cateti è equivalente alla superficie del quadrato costruito sull' ipotenusa.

Nel caso di Flash, quali sono i due cateti e quale l' ipotenusa ?
Il primo cateto è formato dalla distanza tra le coordinate X dei 2 punti ( in questo caso le coordinate X delle due MovieClip )
il secondo cateto è formato dalla distanza tra le coordinate Y dei 2 punti ( in questo caso le coordinate Y delle due MovieClip )
L' ipotenusa è quella che rappresenta la distanza che vogliamo calcolare.
Quindi, avendo i due cateti, basta applicare il teorema di Pitagora in questo modo:

calcolo la lunghezza del primo cateto:
var distanzaX:Number=clip_0_mc.x-clip_1_mc.x;
calcolo la lunghezza del secondo cateto
var distanzaY:Number=clip_0_mc.y-clip_1_mc.y;
NB: In base alla posizione delle due MovieClip potremmo trovarci con i valori dei cateti negativi ma il teorema dice la loro lunghezza al quadrato e quindi qualsiasi numero al quadrato ( sia negtivo che positivo ) da come risultato un numero positivo.
Calcolo la distnza dell' ipotenusa ( quindi la distanza tra i due punti ) con Math.sqry ( sarebbe numero al quadrato di...) di cateto1 per cateto1 + cateto2 per cateto2
var distanza_reale:Number=Math.sqrt(distanzaX*distanza X+distanzaY*distanzaY);

infine visualizzo la distanza in un campo di testo ( questo è ha scopo per questo tutorial, in altri articoli vedremo cosa potremmo farcene di questo valore )
distanza_txt.text=distanza_reale.toString();

In questo altro esempio, ripeto tutti i calcoli all' interno di un intervallo ENTER_FRAME , quindi trascinate le palline per vedere la distanza










e questa è la classe che uso:
Code:
package
{
	import flash.display.MovieClip;
	import flash.text.TextField;
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	public class Pitagora2 extends MovieClip
	{
		public function Pitagora2()
		{
			init();
		}
		
		
		private function init():void
		{
			stage.frameRate=31;
			
			clip_0_mc.buttonMode=true;
			clip_1_mc.buttonMode=true;
			
			this.addEventListener(Event.ENTER_FRAME,calcolaDistanza);
			clip_0_mc.addEventListener(MouseEvent.MOUSE_DOWN,muoviClip);
			clip_0_mc.addEventListener(MouseEvent.MOUSE_UP,fermaClip);
			clip_1_mc.addEventListener(MouseEvent.MOUSE_DOWN,muoviClip);
			clip_1_mc.addEventListener(MouseEvent.MOUSE_UP,fermaClip);
		}
		
		private function calcolaDistanza(e:Event):void
		{
			var distanzaX:Number=clip_0_mc.x-clip_1_mc.x;
			var distanzaY:Number=clip_0_mc.y-clip_1_mc.y;
			var distanza_reale:Number=Math.sqrt(distanzaX*distanzaX+distanzaY*distanzaY);
			
			distanza_txt.text=distanza_reale.toString();
		}
		
		private function muoviClip(m:MouseEvent):void
		{
			m.target.startDrag();
		}
		private function fermaClip(m:MouseEvent):void
		{
			m.target.stopDrag();
		}
	}
}
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

  #2 (permalink)  
Old 23-04-08, 16:43
Zolmandacuba's Avatar
Member
 
Join Date: Apr 2008
Posts: 60
Rep Power: 1
Zolmandacuba is on a distinguished road
Send a message via Skype™ to Zolmandacuba
Re: Teorema di Pitagora con Actionscript 3.0

come si impostano le quantita di cifre decimali? grazie
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
Teorema diPitagora - collisione tra due MovieClip Flep Articoli e tutorials 0 20-09-07 14:48


All times are GMT. The time now is 11:03.


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