Salve Flep,
e salve a tutti gli altri…sono new….chiamami pure DMan…
sapete, con tutta la cattiva informazione che circola sulla rete non è facile trovare portali dove, comunque, ci sono persone che, prima di tutto, sono mosse dalla passione per quello che fanno, sia che per loro sia un lavoro o no…comunque…complimenti ….
Iniziamo con un piccolo contributo….
Considerando che ormai da tempo le stagioni sono un po’ sballate ed il clima è in continuo mutamento…ma , soprattutto, di neve se ne vede sempre meno…..
Creiamo un po’ di neve…e poi….è Natale…senza neve che Natale è?....
Flep vorrei pubblicare un’anteprima ma non so se joomla lato utente lo permetta… magari poi commentiamo un po’ le proprietà ed i metodi….ciao DMan
Creiamo una classe che chiameremo SnowStorm:
Code:
package
{
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class SnowStorm extends Sprite
{
private var _numFlakes:int = 1000;
private var _speed:int = 5;
private var _speedVariation:int = 10;
private var _snowSize:Number = 5;
private var _snowColor:uint = 0xFFFFFF;
private var _viewWidth:Number;
private var _viewHeight:Number;
public function begin(p_time:Number=NaN):void
{
if (isNaN(_viewWidth)) _viewWidth = stage.stageWidth;
if (isNaN(_viewHeight)) _viewHeight = stage.stageHeight;
var delay:Number = (isNaN(p_time)) ? 0 : (p_time*1000)/_numFlakes;
var timer:Timer = new Timer(delay, _numFlakes);
timer.addEventListener(TimerEvent.TIMER, createFlake);
timer.start();
}
private function createFlake(event:TimerEvent):void
{
var snowFlake:SnowFlake = new SnowFlake(_speed, _snowSize, _snowColor, _speedVariation, _viewWidth, _viewHeight);
addChild(snowFlake);
}
private function destroyFlake(event:TimerEvent):void
{
removeChildAt(0);
}
public function set numFlakes(p:int):void
{
_numFlakes = p;
}
public function set speed(p:int):void
{
_speed = p;
}
public function set speedVariation(p:int):void
{
_speedVariation = p;
}
public function set snowSize(p:Number):void
{
_snowSize = p;
}
public function set snowColor(p:uint):void
{
_snowColor = p;
}
public function set viewWidth(p:Number):void
{
_viewWidth = p;
}
public function set viewHeight(p:Number):void
{
_viewHeight = p;
}
}
}
Poi creiamo una classe che chiameremo SnowFlake:
Code:
package
{
import flash.display.Sprite;
import flash.events.*;
import flash.filters.BlurFilter;
internal class SnowFlake extends Sprite
{
private var speedMultiplier:int;
private var speedVariMultiplier:int;
private var speed:uint;
private var speedVariation:uint;
private var flakeRadius:Number;
private var flakeColor:uint;
private var drift:int;
private var viewWidth:int;
private var viewHeight:int;
function SnowFlake(p_speed:int, p_flakeSize:Number, p_flakeColor:uint, p_speedVar:int, p_viewWidth:int, p_viewHeight:int)
{
speedMultiplier = p_speed;
speedVariMultiplier = p_speedVar;
speed = Math.random()*speedMultiplier;
speedVariation = Math.random()*speedVariMultiplier+1;
flakeRadius = p_flakeSize/2;
flakeColor = p_flakeColor;
drift = getDrift();
viewWidth = p_viewWidth;
viewHeight = p_viewHeight;
drawFlake();
setSpeed(speed);
readyFlake();
moveMe();
}
private function drawFlake():void
{
graphics.beginFill(flakeColor, 1);
graphics.drawCircle(0, 0, flakeRadius);
graphics.endFill();
}
private function setSpeed(n:uint):void
{
this.speed = (n * speedVariation)+1;
}
private function readyFlake():void
{
this.y = Math.random()*viewHeight*-1;
this.x = Math.random()*viewWidth;
var bf:BlurFilter = new BlurFilter(drift*2,speed/2,2);
this.filters = [bf];
if(speed/2 < speedVariation)
{
this.scaleX = this.scaleY = .5;
}
}
private function getDrift():int
{
var myDrift = Math.random()*3;
var driftDirection:int = Math.random()*10;
if(driftDirection < 5)
{
myDrift *= -1;
}
return myDrift;
}
private function moveMe():void
{
this.addEventListener(Event.ENTER_FRAME,everyFrame);
}
private function everyFrame(event:Event):void
{
this.y += speed;
this.x += drift;
if (this.y > viewHeight || this.x < 0 || this.x > viewWidth)
{
readyFlake();
}
}
}
}
Ok…a questo punto ci creiamo un .fla:
sceglietevi una qualsiasi dimensione dello stage, esempio 500x500 di colore scuro, frame di 30f/s.
Creiamo due bottoni ed con istanze: begin_btn e end_btn.
Sul primo e unico fotogramma nel pannello azioni andiamo a scrivere:
Code:
import SnowStorm;
var snowStorm:SnowStorm = new SnowStorm();
addChild(snowStorm);
begin_btn.addEventListener(MouseEvent.CLICK, beginSnowFall);
end_btn.addEventListener(MouseEvent.CLICK, endSnowFall);
function beginSnowFall(event:MouseEvent):void
{
snowStorm.begin(10);
}
function endSnowFall(event:MouseEvent):void
{
snowStorm.end(10);
}
Pubblicate l’swf e interagite con i bottoni creati….dimenticavo….
copritevi bene!