Diciamo che questo e' un piccolo regalo da parte mia per le festivita' Natalizie.
Si tratta di salvare la classe che sto per postare in un file di nome Snow.as e di utilizzare l'esempio per testare l' applicazione e personalizzarla a piacere.
Snow.as
codice:class Snow extends MovieClip{ // andr3a [ www.3site.it ] [ 18/12/2004 ] // VARIABLES private var totalCrystals:Number, crystalAlpha:Number, windChange:Number, depth:Number = new Number(); private var path:Object = new Object(); private var crystalColor:String = new String(); // CONSTRUCTOR function Snow(path:Object) { this.path = path; this.depth = 1; setTotalCrystals(100); setAlphaCrystals(80); setWindCrystals(20); setColorCrystals("0xFFFFFF"); } // START APPLICATION public function follow():Void { createCrystals(crystalColor, crystalAlpha); } // PUBLIC SETTINGS public function setTotalCrystals( totalCrystals:Number ):Void { this.totalCrystals = totalCrystals; } public function setAlphaCrystals( crystalAlpha:Number ):Void { this.crystalAlpha = crystalAlpha; } public function setWindCrystals( windChange:Number ):Void { this.windChange = windChange; } public function setColorCrystals( crystalColor:String ):Void { this.crystalColor = crystalColor; } // PRIVATE INITIALIZATION private function createCrystals(crystalColor:String, crystalAlpha:Number):Void { path.createEmptyMovieClip( "crystal_" + depth++, depth ); var firstMovie:MovieClip = path["crystal_" + (depth-1)]; with ( firstMovie ) { beginFill( crystalColor, crystalAlpha ); moveTo( 0, 0 ); curveTo( 4, 0, 4, -4 ); curveTo( 4, -8, 0, -8 ); curveTo( -4, -8, -4, -4 ); curveTo( -4, 0, 0, 0 ); endFill(); } for(var a:Number = new Number(depth); a<=totalCrystals; a++) { firstMovie.duplicateMovieClip("crystal_" + depth++, depth, this); path["crystal_" + (depth-1)]._x = path["crystal_" + (depth-1)]._width + (((Math.random()*10)*Stage.width) / path["crystal_" + (depth-1)]._width); path["crystal_" + (depth-1)]._y = path["crystal_" + (depth-1)]._height + (((Math.random()*10)*Stage.height) / path["crystal_" + (depth-1)]._height); path["crystal_" + (depth-1)]._xscale = path["crystal_" + (depth-1)]._yscale = (Math.random()*100); crystalMovement(path["crystal_" + (depth-1)]); } firstMovie._visible = false; } private function crystalMovement(who:MovieClip):Void { who.rememberWhere = new Number(0); who.remembered = new Number(windChange+1); who.onEnterFrame = function() { if( this.remembered > windChange ) { var casuality:Number = new Number((Math.random() * 100) > 50 ? 1 : -1); this.rememberWhere = ((Math.random()*2) * casuality); this.remembered = 0; } this.remembered++; this._x += this.rememberWhere; this._y += this._xscale / 40; if(this._y>Stage.height) { this._y = 0; } if(this._x>Stage.width) { this._x = 0; } else if(this._x < 0) { this._x = Stage.width; } } } }
esempio.fla
ricordate di settare il classpath o di mettere il fiel Snow.as nella stessa dir di questo file .FLA
codice:// primo keyframe delle actions, mettete lo sfondo nero al documento e magari un framerate a 30 o 50 ... // EXAMPLE 1 [ all modifying parameters ] // DECLARATION var mySnow:Snow = new Snow(this); // MAKE MODIFY mySnow.setTotalCrystals(200); // default 100 - crystals's max number mySnow.setAlphaCrystals(60); // default 80 - crystals's alpha mySnow.setWindCrystals(30); // default 20 - wind's change mySnow.setColorCrystals("0xEFEFEF"); // default 0xFFFFFF - crystals's color // DRAW & FOLLOW mySnow.follow(); // ctrl+invio :-) /* EXAMPLE 2 [ simple to try ] var mySnow:Snow = new Snow(this); mySnow.follow(); */
Spero sia stata cosa gradita, buone feste a tutti![]()


Rispondi quotando