머리가 나뻐서 삽질 SAP(Study And Programming)
작업하면서 눈내리는 효과를 넣어야 하는데 이미지로 하려다가 용량 문제로 스크립트로 대체하기로 함.
직접 짜는데 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);