是否可以在 Flash 中访问整个图片的颜色?

Is it possible to access an entire picture's color in Flash?

我正在尝试更改 Flash 中图像的亮度。我已将闪光灯转换为位图,并想制作一个按钮来增加或减少整个图像的亮度。有没有办法一次访问图像中的每个像素来执行此操作(使用代码,而不是舞台上的面板)?

使用 ColorMatrixFilter class,您可以通过对每个颜色通道应用相同的倍增器来调整亮度。

所以像这样(来自source):

    image.filters = [makeBrightFilter(50)];

    function makeBrightFilter(amount):ColorMatrixFilter {
        amount = amount * (255/250);
        var m:Array = new Array();
        m = m.concat([1, 0, 0, 0, amount]);  // red
        m = m.concat([0, 1, 0, 0, amount]);  // green
        m = m.concat([0, 0, 1, 0, amount]);  // blue
        m = m.concat([0, 0, 0, 1, 0]);      // alpha

        return new ColorMatrixFilter(m);
    }

要将其抽象出来并使其更容易,您可以使用像 Grant Skinner's ColorMatrix class.

这样的库

然后你做这样的事情:

import com.gskinner.geom.ColorMatrix;
import flash.filters.ColorMatrixFilter;

var matrix:ColorMatrix = new ColorMatrix();
matrix.adjustBrightness(50);
image.filters = [new ColorMatrixFilter(matrix)];