SNOWFLAKES DRAWING PAPER

[FLEX] 마우스로 클릭한곳 색상 추출 본문

개발/FLEX/AS3/AIR/BlazeDS

[FLEX] 마우스로 클릭한곳 색상 추출

눈송2 2009. 2. 6. 16:39


http://cafe.naver.com/flex4u/2313
마우스로 클릭한곳 색상 추출및 비교할 수 있나요 ::답변...

내용 : 박스를 클릭하면 해당 박스의 배경 색이 trace 찍힌다...
결과 출력 :
[trace] 16744448
[trace] ff8000
[trace] 16711680
[trace] ff0000
[trace] 16711680
[trace] ff0000







<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" layout="vertical">

<mx:Script>

<![CDATA[

import mx.containers.*;

import mx.events.*;

import mx.graphics.*;

import flash.display.*;

import mx.controls.*;

import flash.events.*;

import flash.geom.ColorTransform;



/*

Author : TheSunRises

Create Date : 2009.2.6

Email : fzOoSR@gmail.com

Description :

HBox 안에 배경색이 다른 두개의 Canvas가 있다

HBox 즉 Canvas 위에 클릭할 경우 HBox 를 캡쳐(ImageSnapshot.captureBitmapData)해서 BitmapData로 만들어

BitmapData.getPixel 메소드를 이용해서 클릭한 지점(HBox.mouseX,Y)의 색 값을 가져옴..

가져온 색 값을 ColorTransform을 이용해서 HEX로 변환해서 출력(TextArea)..

(참고로 getPixel32이용해서 알파값까지 가져올수 있다..)

*/



//-- Use Values -------------------------------------



private var hbx:HBox;

private var bd:BitmapData;

private var result:TextArea;

private function init():void

{

var lbl:Label = new Label();

lbl.setStyle("color","#CECECE");

lbl.setStyle("fontSize",16);

lbl.setStyle("fontWeight","bold");

lbl.text = "클릭한 지점 색 추출 테스트";

this.addChild(lbl);



hbx = new HBox();

hbx.horizontalScrollPolicy = "off";

hbx.verticalScrollPolicy = "off";

hbx.addEventListener(MouseEvent.CLICK, hbxClickHandler);

this.addChild(hbx);



hbx.addChild( retCv("#FF8000") );

hbx.addChild( retCv("#FF0000",true) );



result = new TextArea();

result.percentWidth = 100;

result.height = 50;

this.addChild(result);

}

private function retCv(color:String, completeEvt:Boolean=false):Canvas

{

var ret:Canvas = new Canvas();

ret.width = 100;

ret.height = 100;

ret.setStyle("backgroundColor",color);

if (completeEvt)

ret.addEventListener(FlexEvent.CREATION_COMPLETE, cvCompleteHandler);

return ret;

}

private function cvCompleteHandler(evt:FlexEvent):void

{

evt.target.removeEventListener(FlexEvent.CREATION_COMPLETE, cvCompleteHandler);

hbx.addEventListener(MouseEvent.CLICK, hbxClickHandler);

}

private function hbxClickHandler(evt:MouseEvent):void

{

bd = ImageSnapshot.captureBitmapData(hbx);

//trace( bd.getPixel(hbx.mouseX, hbx.mouseY) );



// 16진수로 변환

var ct:ColorTransform = new ColorTransform();

ct.color = bd.getPixel(hbx.mouseX, hbx.mouseY);

//trace( ct.color.toString(16) );



result.text = "# getColor :" + bd.getPixel(hbx.mouseX, hbx.mouseY) + " / #" + ct.color.toString(16) + "\r" + result.text;

}

]]>

</mx:Script>

</mx:Application>
Comments