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

时间:2015-05-05 15:43:09

标签: image actionscript-3 flash

我试图改变Flash中图像的亮度。我已经将闪光灯转换为位图,并希望制作一个可以增加或减少整个图像亮度的按钮。有没有办法一次访问图像中的每个像素(使用代码,而不是舞台上的面板)?

1 个答案:

答案 0 :(得分:1)

使用ColorMatrixFilter类,您可以通过对每个颜色通道应用相同的乘数来调整亮度。

这样的事情(来自这个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)];