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>
|