利用 AS3 DisplayObject.transform.colorTransform 屬性,配合 ColorTransform 類的紅/綠/藍/Alpha 乘數與偏移量,僅兩行代碼即可將任意顯示物件轉為底片負片效果(黑白反轉、色相互補)。原理簡單卻極具視覺衝擊力。
new ColorTransform(
redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier,
redOffset, greenOffset, blueOffset, alphaOffset
)
各通道計算公式:
新紅 = 舊紅 * redMultiplier + redOffset 新綠 = 舊綠 * greenMultiplier + greenOffset 新藍 = 舊藍 * blueMultiplier + blueOffset 新Alpha = 舊Alpha * alphaMultiplier + alphaOffset
官方文檔建議乘數範圍 0~1,偏移範圍 0~255。但**突破限制**設置:
代入公式:新紅 = 舊紅 * (-1) + 255 = 255 - 舊紅 → 紅色通道反相。
綠、藍同理。三通道同時反相即得**底片負片效果**(互補色)。
// 假設舞台上有一影片剪輯實例名為 film_mc film_mc.transform.colorTransform = new ColorTransform(-1, -1, -1, 1, 255, 255, 255, 0); // 可選:水平翻轉修正底片左右反轉視覺習慣 film_mc.scaleX = -1;
film_mc。複製一份並排對比(圖 1)。
左右對比:原圖 vs 底片效果

底部裝飾條:黑色半透明基底 + 白色齒孔條
colorTransform 為正常/負片矩陣,做「底片現像」動畫。colorTransform 由 GPU 執行,不觸發 CPU 像素迴圈,適合實時視頻/遊戲特效。雖文檔建議 0~1,但 Flash Player 內部並未強制限制範圍,負乘數配合最大偏移恰好構成「通道反相」線性變換。這是一個被社區廣泛驗證的「非官方標準用法」,安全可靠。