Qualche giorno fa avevo chiesto aiuto per la scrittura di una classe, questo è quello che è venuto fuori
Si può convertire molto facilmente in AS2
codice:
/*
#################
# Name: easeTime Class
# Author: Pomili Alessandro
# Date: 17 Nov 20009
# Description: La classe restituisce un array nel quale gli indici contengono un intervallo di numeri, con progressione calcolata sulle funzione di ease
###########
*/
package {
import fl.transitions.easing.Regular;
public class easeTime {
public function easeTime ():void {
throw (new Error("La classe è di tipo singleton e non può essere istanziata"));
}
//restituisce un intervallo tra delay e tempo (es tra 0 e 5, o tra 3-7)
public static function getTime(elementi:Number, myease:Function=null, tempo:Number=1, delay:Number=0):Array {
var arrayTempo = new Array();
if (myease==null) { myease = Regular.easeOut};
for (var i:uint = 1; i <= elementi; i++) {
//myease(i, delay, ((i/elementi)/i)*elementi, elementi)*tempo // questa istruzione calcola il valore di ease sul numero degli elementi tra l'intervallo di tempo 0, e tempo)
arrayTempo.push (Math.round(myease(i, delay/tempo, ((i/elementi)/i)*elementi, elementi)*tempo*1000)/1000); //round*1000/1000 arrotonda a 3 decimali
}
return arrayTempo;
}
//restituisce un intervallo tra tempo e delay
public static function getTimeOff(elementi:Number, myease:Function=null, tempo:Number=1, delay:Number=0):Array {
var arrayTempo:Array = getTime(elementi, myease, tempo, delay)
return arrayTempo.reverse()
}
//restituisce un intervallo dove i lati dell'array contengono gli intervalli più piccoli
public static function getTimeCenter(elementi:Number, myease:Function=null, tempo:Number=1, delay:Number=0, blReverse:Boolean=false):Array {
var meta_elementi:Number = Math.ceil(elementi/2)
var arrayMetaTempo:Array = new Array()
if (blReverse){
arrayMetaTempo = getTime(meta_elementi, myease, tempo, delay)
}else{
arrayMetaTempo = getTimeOff(meta_elementi, myease, tempo, delay)
}
var reverse:Array = reverse(arrayMetaTempo)
if (elementi%2!=0){ //se gli elementi sono dispari tolgo il primo indice
reverse.shift()
}
var arrayTempo:Array=arrayMetaTempo.concat(reverse)
return arrayTempo
}
//restituisce un intervallo dove i lati dell'array contengono gli intervalli più grandi
public static function getTimeSide(elementi:Number, myease:Function=null, tempo:Number=1, delay:Number=0):Array {
return getTimeCenter(elementi, myease, tempo, delay, true)
}
//crea una copia inversa dell'array passato
private static function reverse(arrayTempo:Array):Array {
var reverse:Array = new Array()
reverse = reverse.concat(arrayTempo)
return reverse.reverse()
}
}
Uso
codice:
import com.greensock.*;
import com.greensock.easing.*
import fl.transitions.easing.*;
var elementi:Number=10
var ease:Function = Regular.easeOut
var durata:Number = 10
var delay:Number = 1
var tempo = easeTime.getTime(elementi, ease, durata, delay)
//tempo = easeTime.getTimeOff(elementi, ease, durata, delay)
//tempo = easeTime.getTimeSide(elementi, ease, durata, delay)
//tempo = easeTime.getTimeCenter(elementi, ease, durata, delay)
trace(tempo)
/*
for (var i=0;i<elementi;i++){
var cc:Cerchio = new Cerchio()
cc.x = (cc.width+5)*i
cc.y = stage.stageHeight-cc.height;
addChild(cc)
TweenLite.from(cc, 2, {y:"-550", ease:Regular.easeOut, delay:tempo[i]})
}*/
Magari può esservi utile, se riscontrate qualche problema, o se avete in mente altri tipi effetti fatemi sapere