Animazioni con Flash CS3 - spring frizione e gravità
This is a discussion on Animazioni con Flash CS3 - spring frizione e gravità within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Prosegue la serie che è iniziata con l' articolo dell' inerzia .
Poi abbiamo aggiunto l' effetto molla ( spring ) e la ...
Animazioni con Flash CS3 - spring frizione e gravità
Prosegue la serie che è iniziata con l' articolo dell' inerzia.
Poi abbiamo aggiunto l' effetto molla ( spring ) e la frizione.
Adesso aggiungiamo la gravità e vediamo come fare rimbalzare una pallina.
Creo un fla che salvo con nome ' gravita.fla '.
Al suo interno ho sullo stage una MovieClip circolare con nome istanza ' ball_mc '.
Ecco il codice:
Code:
var spring:Number=.1;
var frizione:Number=.98;
var gravita:int=1;
var limite:Number=stage.stageHeight;
stage.frameRate=31;
ball_mc.velY=0;
ball_mc.oldY=0;
ball_mc.addEventListener(Event.ENTER_FRAME,go);
function go(e:Event):void
{
e.target.velY+=gravita;
e.target.velY*=frizione;
e.target.y+=e.target.velY;
if(e.target.y>limite-e.target.width/2)
{
e.target.y=limite-e.target.width/2;
e.target.velY*=-1;
}
}
Analizziamo il codice
Quattro variabili numeriche che rispettivamente contengono i valori necessari per l' effetto
var spring:Number=.1;
var frizione:Number=.98;
var gravita:int=1;
var limite:Number=stage.stageHeight;
imposto la velocità del frame rate
stage.frameRate=31;
assegno 2 proprietà a ball_mc ( la velocità )
ball_mc.velY=0;
ball_mc.oldY=0;
aggiungo ENTER_FRAME che chiama la funzione go
ball_mc.addEventListener(Event.ENTER_FRAME,go);
function go(e:Event):void
{
aggiungo la gravità a velY ( una delle proprietà che ho creato a ball_mc e che aveva valoe zero )
e.target.velY+=gravita;
aggiungo la frizione
e.target.velY*=frizione;
aggiungo alla y di ball_mc la sua proprietà velY
e.target.y+=e.target.velY;
controllo la y di ball_mc
if(e.target.y>limite-e.target.width/2)
{
e se è maggiore del valore della variabile ' limite ' meno la metà della larghezza di ball_mc inverto il valore di velY
e.target.y=limite-e.target.width/2;
e.target.velY*=-1;
}
}