본문 바로가기
배워보자!!/플래시

[flash as3.0] 픽셀단위로 이미지 나타내기 ver1 (pixelDissolve)

by norinda 2015. 4. 2.
728x90


main.as


temp.fla



dissolver = 녹다,용해되다.

픽셀단위로 이미지위에 녹듯이 나타나는 듯하네요 ㅎ

좋아하는 여자 연예인 사진으로 간단한 갤러리 만들어봤습니다.

보시면 이미지가 픽셀단위로 이미지가 나타나는데로 살짝 어지럽네요 ;;

따로 버튼추가하셔서 이미지 골라볼수 있게 한번 만들어보세요~






package  

{

import flash.events.Event;

import flash.display.MovieClip;

import flash.display.Bitmap;

import flash.display.BitmapData;

import flash.utils.Timer;

import flash.events.TimerEvent;

import flash.geom.Point;

import flash.geom.Rectangle;

public class main extends MovieClip

{

private var imgNum:int;

private var oldImgNum:int;

private var totalImgNum:int=3;//총이미지 수

private var imageWidth:int;

private var imageHeight:int;

private var pixelCountNum:Number = 0;

private var pixelSpeed:Number = 0;

//

private var timer:Timer = new Timer(4000,1); //4초후 한번 실행

private var blankBitmapData:BitmapData;

private var loadBitmap:Bitmap;

private var imageArray:Array = new Array();

private var pixelNum:int = 3000;//3000픽셀씩 나타나게 되나봐요?

private var temp:BitmapData = new BitmapData(500, 350,true,0xffffff);

public function main() 

{

//세장의 이미지입니다.

var image1:Bitmap = new Bitmap(new img1());

var image2:Bitmap = new Bitmap(new img2());

var image3:Bitmap = new Bitmap(new img3());

//imageArray에 넣는 과정이구요.

temp = image1.bitmapData;

imageArray.push(temp);

temp = image2.bitmapData;

imageArray.push(temp);

temp = image3.bitmapData;

imageArray.push(temp);

blankBitmapData = new BitmapData(500, 350,true,0xffffff);

loadBitmap = new Bitmap(blankBitmapData);

imageWidth = stage.stageWidth;

imageHeight = stage.stageHeight;

timer.addEventListener(TimerEvent.TIMER, timerHandler);

addChild(loadBitmap);

init();

}

private function init():void

{

stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);

}

private function timerHandler(e:TimerEvent):void

{

pixelCountNum = 0;

pixelSpeed = 0;

//이미지가 완전히 나타났을때 다음이미지 순서로 변경

oldImgNum = imgNum;

if(imgNum<totalImgNum-1) 

{

imgNum++;

}else 

{

imgNum = 0;

}

stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);

}

private function enterFrameHandler(e:Event):void 

{

pixelCountNum += pixelNum;

//pixelNum 픽셀만큼 더해줘서 이미지가 다 나타났는지 체크

if (pixelCountNum>(imageWidth*imageHeight)+pixelNum) 

{

stage.removeEventListener(Event.ENTER_FRAME,enterFrameHandler);

timer.start();

//이미지가 다 나타났으면 4초후 timer 이벤트 실행

}

pixelSpeed = blankBitmapData.pixelDissolve(imageArray[imgNum],new Rectangle(0,0,500,350),new Point(0,0),pixelSpeed,pixelNum,0xFFFFFFFF);

}

}

}

반응형

댓글