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; }
沒有留言:
張貼留言