최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰


작업하면서 눈내리는 효과를 넣어야 하는데 이미지로 하려다가 용량 문제로 스크립트로 대체하기로 함.


직접 짜는데 1시간 가까이 걸렸다. 이리저리 삽질.


티는 잘 안나지만 투명도에 따라 스케일의 원근감도 표현되어 있고 BulrFilter도 들어가 있다.




결과물)






코드)

Snow.as


package 
{
	import flash.display.Sprite;
	import flash.display.Graphics;
	import flash.events.Event;
	import flash.display.MovieClip;
	import flash.filters.GlowFilter;
	import flash.filters.BlurFilter;
	import flash.filters.BitmapFilterQuality;
	
	public class Snow extends Sprite
	{
		private var _w:uint;
		private var _h:uint;
		private var _total:uint;
		private var snowArr:Array = [];
		public function Snow($w:uint = 800, $h:uint = 600, $total:uint = 100)
		{
			_w = $w;
			_h = $h;
			_total = $total;
			init();
		}

		private function init():void
		{
			for(var i:uint=0; i<_total; ++i)
			{
				var snow:MovieClip = new cir();
				snow.x = fnRandomize(0, _w);
				snow.y = -fnRandomize(0, _h);
				
				snow.tx = fnRandomize(-4, 4);
				snow.ty = fnRandomize(3, 8);
				snow.alpha = fnRandomize(0.1, 1);
				snow.scaleX = snow.scaleY = snow.alpha;
				
				var glow:GlowFilter = new GlowFilter();
				glow.color = 0xFFFFFF * Math.random();
				//snow.filters = [glow];
				
				var num:Number = fnRandomize(0, 10);
				var blur:BlurFilter = new BlurFilter(num, num, BitmapFilterQuality.HIGH);
				snow.filters = [blur];
				
				this.addChild(snow);
				snowArr.push(snow);
			}
			
			this.addEventListener(Event.ENTER_FRAME, loop);
		}
		
		private function loop(e:Event):void
		{
			for(var i:uint=0; i<_total; ++i)
			{
				var snow:MovieClip = snowArr[i];
				snow.x += snow.tx;
				snow.y += snow.ty;
				
				if(snow.y > _h) {
					snow.y = -snow.height;
					snow.x = fnRandomize(0, _w);
				}
			}
		}
		
		private function fnRandomize($min:Number, $max:Number):Number
		{
			return Math.random() * ($max - $min) + $min;
		}
	}
}

 



호스트코드)

Main.as
 

var snow:Snow = new Snow(1184,704,100);
addChild(snow);

 


댓글