Buongiorno, sto iniziando a vedere un po' di AS3 (era anche ora!), e sto facendo alcuni semplici esperimenti e convertendo cose che ho gia' fatto in AS2. Ed uno di questi semplici script che sto facendo e' quello di fiocchi di neve che vengono generati di continuo, posizionati e ridimensionati a random.
Sembra funzionare tutto, tranne che dopo qualche secondo i fiocchi presenti sullo stage in quel momento bloccano il loro tween verso il basso, nel frattempo vengono giu' di nuovi, ed ogni tanto si ribloccano, e non ne capisco il perche'
L'swf e' questo
il codice nella classe e' il seguente:
Codice PHP:
package {
import flash.display.MovieClip;
import flash.events.*;
import fl.transitions.Tween;
import fl.transitions.easing.*;
public class letsnow extends MovieClip {
public var counter:Number = 0;
public var newsnow:Number = 15;
public var range:Number = 30;
public var flake:Number = 0;
public function letsnow() {
this.addEventListener(Event.ENTER_FRAME,createsnow);
}
private function createsnow(e:Event):void {
if (counter == newsnow) {
flake++;
counter = 0;
var mc:MovieClip;
mc = new snowflakes();
mc.name = "flake_"+flake;
e.target.addChild(mc);
var current_flake:Number = Math.round(Math.random()*2) + 1;
mc.gotoAndStop(current_flake);
var rand_depth:Number = Math.round(Math.random()*4)+1;
var scale:Number = Math.round((100*rand_depth)/5);
scale /= 100;
var speed:Number = 5 - rand_depth;
speed *= 6;
var color_id:Number = Math.round(Math.random()*2);
var alpha_min:Number = 0.1;
var alpha_max:Number = 0.5;
//0 and 1 is white, 2 is black
if (color_id == 2) {
alpha_min = 0.4;
alpha_max = 0.7;
}//end if
var flake_alpha:Number = Math.random()*(alpha_max-alpha_min);
var init_x = -(range/2) + Math.round(Math.random()*stage.stageWidth);
mc.alpha = flake_alpha;
mc.x = init_x;
var init_y = -(mc.height);
mc.y = init_y;
trace(stage.stageHeight+mc.height);
mc.scaleX = scale;
mc.scaleY = scale;
mc.addEventListener("click",giveMyName);
var tw:Tween = new Tween(mc,"y",Regular.easeInOut,init_y,(stage.stageHeight+mc.height),speed,true);
tw.addEventListener("motionFinish",flakedie);
function flakedie():void{
removeFlake(mc);
};
} else {
counter++;
}
};
private function giveMyName(e:Event){
trace(e.target.name);
};
private function removeFlake(mc:MovieClip):void{
trace(mc.name);
this.removeChild(mc);
}
};//end class
}
Grazie per l'aiuto