Qualche giorno fa avevo chiesto aiuto per la scrittura di una classe, questo è quello che è venuto fuori
Si può convertire molto facilmente in AS2
Usocodice:/* ################# # 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() } }
Magari può esservi utile, se riscontrate qualche problema, o se avete in mente altri tipi effetti fatemi saperecodice: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]}) }*/![]()

Rispondi quotando

