Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Trigonometria esempio 6 - movimento rotatorio e direzione

This is a discussion on Trigonometria esempio 6 - movimento rotatorio e direzione within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Salve ! Abbiamo visto diverse tecniche di come applicare la trigonometria ad Actionscrpt 3.0 Con questo tutorial, vedremo come gestire ...


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 12-11-07, 06:41
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Trigonometria esempio 6 - movimento rotatorio e direzione

Salve !

Abbiamo visto diverse tecniche di come applicare la trigonometria ad Actionscrpt 3.0

Con questo tutorial, vedremo come gestire il movimento rotatorio di una MovieClip e la direzione del movimento.
Chiaramente farò un esempio puramente didattico e come sempre dipenderà da noi stessi trovare un' applicazione pratica.
Più fantasia e doti grafiche si hanno, più potrebbe servirvi applicare queste semplici formule trigonometriche.
Vediamo...

Creo un FLA che salvo con nome ' trigonometria6.fla '.
Al suo interno creo una MvoieClip di forma circolare, la trascino sullo stage e gli assegno nome istanza ' clip_mc '.
Su un altro livello, che chiamerò code, appico Actionscript in questo modo:

Code:
stage.frameRate=24;

clip_mc.addEventListener(Event.ENTER_FRAME,rotate);

function rotate(evt:Event):void
{
	var angle:Number=(mouseX-stage.stageWidth/2)*.001;
	var sine:Number=Math.sin(angle);
	var cosine:Number=Math.cos(angle);
	var xx:Number=evt.target.x-stage.stageWidth/2;
	var yy:Number=evt.target.y-stage.stageHeight/2;
	var x1:Number=cosine*xx-sine*yy;
	var y1:Number=sine*xx+cosine*yy;
	evt.target.x=stage.stageWidth/2+x1;
	evt.target.y=stage.stageHeight/2+y1;
}
con il conseguente risultato ( muovere il mouse sull' SWF ):






Analizziamo il codice

imposto una velocità di frame rate
stage.frameRate=24;
aggiungo ENTER_FRAME a clip_mc
clip_mc.addEventListener(Event.ENTER_FRAME,rotate) ;

function rotate(evt:Event):void
{
creo una variabile numerica con nome angle che prenderà il valore di un angolo dato dalla differenza tra la posizione X del mouse e la metà della larghezza dello stage, tutto moltiplicato per 0.001 ( altrimenti sarebbe troppo veloce ( se il valore risultasse negativo, ecco che avviene il cambio di direzione del movimento rotatorio di clip_mc )
var angle:Number=(mouseX-stage.stageWidth/2)*.001;
creo due variabili numeriche alle quali assegno rispettivamente il valore del seno e del coseno dell' angolo appena citato
var sine:Number=Math.sin(angle);
var cosine:Number=Math.cos(angle);
creo una variabile numerica alla quale assegno il valore della differenza tra la posizione X di clip_mc e la metà della larghezza dello stage
var xx:Number=evt.target.x-stage.stageWidth/2;
creo una variabile numerica alla quale assegno il valore della differenza tra la posizione Y di clip_mc e la metà dell' altezza dello stage
var yy:Number=evt.target.y-stage.stageHeight/2;
Adesso utilizzo due formule che riguardano gli angoli opposti della trigonometria, precisamente il teorema del seno, che dice:
I lati di un triangolo sono proporzionali al seno degli angoli opposti.
creo una variabile numerica alla quale assegno il valore del coseno moltiplicato per xx ( differenza tra la posizione X di clip_mc e la metà della larghezza dello stage ) e gli sottraggo il valore del seno moltiplicato per yy ( differenza tra la posizione Y di clip_mc e la metà dell' altezza dello stage )
var x1:Number=cosine*xx-sine*yy;
ora faccio l' incontrario
var y1:Number=sine*xx+cosine*yy;
adesso do in pasto alla X di clip_mc il valore della metà della larghezza dello stage più il valore risultato dalla variabile x1
evt.target.x=stage.stageWidth/2+x1;
e alla Y di clip_mc il valore della metà dell' altezza dello stage più il valore risultato dalla variabile y1
evt.target.y=stage.stageHeight/2+y1;
}

Alla prossima & 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 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
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 12: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