利用 AS3 DisplayObject.transform.colorTransform 屬性,設置 RGB 乘數為 -1、偏移量為 255,巧妙繞過官方文檔「乘數 0-1」限制,一鍵將任意顯示對象轉為底片負片效果,並可水平鏡像修正方向。
ColorTransform 計算公式(以紅色通道為例):
新紅色 = 舊紅色 × redMultiplier + redOffset
redMultiplier 範圍 0-1,redOffset 範圍 0-255。redMultiplier = -1, redOffset = 255 時,新紅色 = 255 - 舊紅色,完美實現通道反相(負片效果)。綠、藍、Alpha 同理。photoMC 放入照片,回主場景拖入實例命名 photoMC。photoMC 水平並排,作為原圖對照。film_mc(將製作負片)。actions 圖層,第 1 幀代碼:film_mc.transform.colorTransform = new ColorTransform(-1, -1, -1, 1, 255, 255, 255, 0);
film_mc.scaleX = -1; // 水平鏡像,修正底片方向感
new ColorTransform(-1,-1,-1, 1, 255,255,255, 0):RGB 乘數 -1、偏移 255 → 全通道反相;Alpha 乘數 1、偏移 0 → 透明度不變。scaleX = -1:水平鏡像,因底片感光面與原像方向相反,視覺更真實。colorTransform 為正常值 (new ColorTransform()) 與負片值。GPU 級像素運算,零 CPU 遍歷像素,單幀執行 < 1ms,可實時套用於視頻流、攝像頭畫面、大型圖片,無效能壓力。
此技巧展示了深入理解 Flash 渲染管線(ColorTransform 數學本質)後,能突破文檔限制創造實用視覺效果的高級用法。