BitmapData.colorTransform(rect:Rectangle, colorTransform:flash.geom:ColorTransform):void參數
使用 ColorTransform 物件調整點陣圖影像指定區域中的顏色值。 如果矩形符合點陣圖影像的邊界,則此方法將會變化整個影像的顏色值。
rect:Rectangle — 定義 ColorTransform 物件套用之影像區域的 Rectangle 物件。
colorTransform:flash.geom:ColorTransform — 用來說明要套用之顏色轉換值的 ColorTransform 物件。
1001120_ColorTransform_1.swf
※ 點擊start鈕開始變色, 其間,點擊stage暫停, 再次點擊stage繼續執行
ColorTransform()建構函式參數
ColorTransform(redMultiplier:Number = 1.0, greenMultiplier:Number = 1.0, blueMultiplier:Number = 1.0, alphaMultiplier:Number = 1.0, redOffset:Number = 0, greenOffset:Number = 0, blueOffset:Number = 0, alphaOffset:Number = 0)
以指定的顏色色版值和 Alpha 值為顯示物件建立 ColorTransform 物件。
redMultiplier:Number (default = 1.0) — 紅色倍數的值 (範圍從 0 至 1)。
greenMultiplier:Number (default = 1.0) — 綠色倍數的值 (範圍從 0 至 1)。
blueMultiplier:Number (default = 1.0) — 藍色倍數的值 (範圍從 0 至 1)。
alphaMultiplier:Number (default = 1.0) — Alpha 透明度倍數的值 (範圍從 0 至 1)。
redOffset:Number (default = 0) — 紅色顏色色版的偏移值 (範圍從 -255 至 255)。
greenOffset:Number (default = 0) — 綠色顏色色版的偏移值 (範圍從 -255 至 255)。
blueOffset:Number (default = 0) — 藍色顏色色版的偏移值 (範圍從 -255 至 255)。
alphaOffset:Number (default = 0) — Alpha 透明度色版值的偏移 (範圍從 -255 至 255)。
- 新的紅色值 = (舊的紅色值 * redMultiplier ) + redOffset
- 新的綠色值 = (舊的綠色值 * greenMultiplier ) + greenOffset
- 新的藍色值 = (舊的藍色值 * blueMultiplier ) + blueOffset
- 新的 Alpha 值 = (舊的 Alpha 值 * alphaMultiplier ) + alphaOffset
※ ColorTransform物件的兩種使用方法
- 在 BitmapData 類別之 colorTransform() 方法的 colorTransform 參數中使用
colorTransform(rect:Rectangle, colorTransform:flash.geom:ColorTransform):void
使用 ColorTransform 物件調整點陣圖影像指定區域中的顏色值。 - 當作 Transform 物件 (可當作顯示物件的 transform 屬性使用) 的 colorTransform 屬性使用
此例:
(一)
調用ColorTransform類別建構式,定義新建的colorTransform物件為
new ColorTransform(0.99,0.99,0.99,1)
--> (R,G,B,Alpha)依序為(0.99,0.99,0.99,1)
(二)
而後在 ENTER_FRAME 下, 持續調用
BitmapData.colorTransform(rect:Rectangle, colorTransform:flash.geom:ColorTransform) 方法
將(一)的colorTransform物件做為此處的colorTransform參數
每次執行都將r,g,b三色版各乘以0.99, 改變其顏色, 當r,g,b三色版都為0, Bitmap就變成黑色.
(一)
調用ColorTransform類別建構式,定義新建的colorTransform物件為
new ColorTransform(0.99,0.99,0.99,1)
--> (R,G,B,Alpha)依序為(0.99,0.99,0.99,1)
(二)
而後在 ENTER_FRAME 下, 持續調用
BitmapData.colorTransform(rect:Rectangle, colorTransform:flash.geom:ColorTransform) 方法
將(一)的colorTransform物件做為此處的colorTransform參數
每次執行都將r,g,b三色版各乘以0.99, 改變其顏色, 當r,g,b三色版都為0, Bitmap就變成黑色.
import flash.geom.ColorTransform;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.events.Event;
import flash.sensors.Accelerometer;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.events.MouseEvent;
import flash.display.MovieClip;
var infoTF:TextField;
var startBtn:MovieClip;
var flag:Boolean = false;
var ctf:ColorTransform = new ColorTransform(0.99,0.99,0.99,1);
var bmd:BitmapData = new BitmapData(500,350,false,0xff00ff);
var bmdBluePrint:BitmapData = bmd.clone();
var bm:Bitmap = new Bitmap(bmd);
var rec:Rectangle = new Rectangle(0,0,bmd.width,bmd.height);
addChild(bm);
addChild(infoTF);
addChild(startBtn);
startBtn.buttonMode = true;
startBtn.addEventListener(MouseEvent.CLICK,startHandler);
function startHandler(event:MouseEvent):void{
/**/
bmd = bmdBluePrint.clone();
bm.bitmapData = bmd;
flag = false;
addEventListener(Event.ENTER_FRAME,loopHandler);
stage.addEventListener(MouseEvent.CLICK,clickHandler);
return;
}
function loopHandler(event:Event):void {
bmd.colorTransform(rec,ctf);
var tmpString:String = "0x" + (bmd.getPixel(250,175)).toString(16);
infoTF.text = tmpString;
trace(tmpString);
if(tmpString == "0x0"){
removeEventListener(Event.ENTER_FRAME,loopHandler);
stage.removeEventListener(MouseEvent.CLICK,clickHandler);
flag == false;
return;
}
return;
}
function clickHandler(event:MouseEvent):void {
if (flag == true) {
removeEventListener(Event.ENTER_FRAME,loopHandler);
flag = false;
} else{
addEventListener(Event.ENTER_FRAME,loopHandler);
flag = true;
}
return;
}


沒有留言:
張貼留言