Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Animazioni con Flash CS3 - spring su 3 punti

This is a discussion on Animazioni con Flash CS3 - spring su 3 punti within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Eccoci ad un altro esempio di come utilizzare l' animazione spring ( vedi articolo: Animazioni con Flash CS3 - spring e frizione ...


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 20-09-07, 14:24
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Animazioni con Flash CS3 - spring su 3 punti

Eccoci ad un altro esempio di come utilizzare l' animazione spring ( vedi articolo: Animazioni con Flash CS3 - spring e frizione
Questa volta utilizzo la spring su una MovieClip che è mossa da 3 punti e ciò significa che il movimento sarà dominato dalla partecipazione di 3 ' forze ' diverse.
Chiaramente, dando spazio alla propria fantasia, si possono creare animazioni che catturano l' interesse dell' utente facendolo interagire un pochettino.
Lascio a voi questo compito.

Vediamo questo tutorial...

Creo un FLA che salvo con nome ' spring_3.fla ' al cui interno:
- creo 3 MovieClip di forma quadrata ale quali assegno nomi istanze punto_0_mc, punto_1_mc, punto_2_mc .
- creo una MovieClip di forma circolare a cui assegno nome istanza ball_mc

Creo la Document Class, un file AS che salvo con nome ' Spring3.as ', implementata in questo modo:
Code:
package
{
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	import flash.events.Event;
	
	public class Spring3 extends MovieClip
	{
		private var clips_array:Array;
		
		private const spring:Number=.1;
		private const frizione:Number=.9;
		private var vx:Number=0;
		private var vy:Number=0;

		public function Spring3()
		{
			init();
		}
		
		private function init():void
		{
			stage.frameRate=31;
			
			clips_array=new Array(punto_0_mc,punto_1_mc,punto_2_mc);
			
			addListeners();
		}
		
		private function addListeners():void
		{
			for(var i:int=0;i < clips_array.length;i++)
			{
				clips_array[i].buttonMode=true;
				clips_array[i].addEventListener(MouseEvent.MOUSE_DOWN,doDrag);
				clips_array[i].addEventListener(MouseEvent.MOUSE_UP,dropDrag);
			}
			
			this.addEventListener(Event.ENTER_FRAME,muoviDisegna);
		}
		
		private function doDrag(m:MouseEvent):void
		{
			m.target.startDrag();
		}
		
		private function dropDrag(m:MouseEvent):void
		{
			m.target.stopDrag();
		}
		
		private function muoviDisegna(e:Event):void
		{
			this.graphics.clear();
			this.graphics.lineStyle(1,0x333333,1);
			
			for(var i:int=0;i < clips_array.length;i++)
			{
				var ax:Number=(clips_array[i].x-ball_mc.x)*spring;
				var ay:Number=(clips_array[i].y-ball_mc.y)*spring;
				vx+=ax;
				vy+=ay;
				
				this.graphics.moveTo(clips_array[i].x,clips_array[i].y);
				this.graphics.lineTo(ball_mc.x,ball_mc.y);
			}
			vx*=frizione;
			vy*=frizione;
			ball_mc.x+=vx;
			ball_mc.y+=vy;
		}
	}
}
Risultato:










Analizziamo il codice

Proprietà

un array in cui inserisco le 3 movieclip quadrate
private var clips_array:Array;
la ormai nota costante numerica spring
private const spring:Number=.1;
altrettantonota la costante numerica frizione
private const frizione:Number=.9;
altre due variabili numeriche che saranno le velocità di ball_mc
private var vx:Number=0;
private var vy:Number=0;

Metodi
init();
imposto una velocità di frame rate
stage.frameRate=31;
inizializzo l' array, inserendo le movieclip quadrate al suo interno
clips_array=new Array(punto_0_mc,punto_1_mc,punto_2_mc);
chiamo il metodo addListeners in cui aggiungerò in listeners necessari
addListeners();

addListeners();
creo un ciclo con massima iterazione il length dell' array
for(var i:int=0;i < clips_array.length;i++)
{
faccio in modo che per ogni clip si veda la manina del mouse durante gli eventi
clips_array[i].buttonMode=true;
aggiungo un listener in ascolto dell' evento MOUSE_DOWN su ogni clip dell' array che chiamerà il metodo doDrag()
clips_array[i].addEventListener(MouseEvent.MOUSE_DOWN,doDrag);
aggiungo un listener in ascolto dell' evento MOUSE_UP su ogni clip dell' array che chiamerà il metodo dropDrag()
clips_array[i].addEventListener(MouseEvent.MOUSE_UP,dropDrag);
}
aggiungo un listener ( alla ex _root ) in ascolto dell' evento ENTER_FRAME che chiamerà il metodo muoviDisegna() tante volta al secondo pari al numero del frame rate
this.addEventListener(Event.ENTER_FRAME,muoviDiseg na);

doDrag(m:MouseEvent)
dico alla clip di iniziare il trascinamento
m.target.startDrag();

dropDrag(m:MouseEvent);
dico alla clip di fermare il trascinamento
m.target.stopDrag();

muoviDisegna();
ricordiamoci che il this, in questo contesto è riferito alla TimeLine
pulisco le grafiche
this.graphics.clear();
inizializzo le grafiche
this.graphics.lineStyle(1,0x333333,1);
creo un ciclo con massima iterazione il lenght dell' array clips_array
for(var i:int=0;i < clips_array.length;i++)
{
appilco l' inerzia sulla X e sulla Y della clip dell'array ( è in questo momento che l' inerzia delle 3 MovieClip dell' array agiscono insieme su una unica velocità X e Y, appunto le variabili vx e vy )
var ax:Number=(clips_array[i].x-ball_mc.x)*spring;
var ay:Number=(clips_array[i].y-ball_mc.y)*spring;
vx+=ax;
vy+=ay;
disegno le linee tra le clips dell' array e ball_mc
this.graphics.moveTo(clips_array[i].x,clips_array[i].y);
this.graphics.lineTo(ball_mc.x,ball_mc.y);
}
applico la frizione a ball_mc
vx*=frizione;
vy*=frizione;
ball_mc.x+=vx;
ball_mc.y+=vy;


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

Similar Threads

Thread Thread Starter Forum Replies Last Post
Animazioni con Flash CS3 - spring frizione e gravità Flep Articoli e tutorials 3 03-07-08 17:11
Animazioni con Flash CS3 - spring e frizione Flep Articoli e tutorials 2 27-04-08 23:50
Animazioni con Flash CS3 - spring e frizione + mouse Flep Articoli e tutorials 0 20-09-07 13:22
Animazioni con Flash CS3 - the spring Flep Articoli e tutorials 0 19-09-07 15:58
Animazioni con Flash CS3 - spring frizione e gravità zakwer Actionscript 3.0 avanzato 1 10-09-07 10:12


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


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