美文网首页
颜色滤镜 - ColorFilter Laya

颜色滤镜 - ColorFilter Laya

作者: 邹志强_a618 | 来源:发表于2019-01-21 18:22 被阅读0次

ColorFilter是颜色滤镜,这里以Laya的ColorFilter为例子进行说明。

数据成员:

       _matrix 是一维Array数组,表示5X5矩阵。元素的存储方式是行优先(即:数组的前5个元素对应矩阵的第一行,数组的第2组5个元素对应矩阵的第二行,等等)。

      _mat 是一维Float32Array数组,数组的元素个数是16,表示 4 X 4 矩阵。元素的存储方式也是行优先。

     _alpha 是一维Float32Array数组,数组的元素个数是4,表示rgba值

公式为 newColor=mat*color+colorAdd, 其中color表示原始(rgba)颜色,mat表示_mat, colorAdd表示_alpha, newColor就是经过ColorFilter处理后的(rgba)颜色。

函数成员

  /**

*设置矩阵数据

*@param matrix 由 20 个项目(排列成 4 x 5 矩阵)组成的数组

*@return this

*/

  setByMatrix(matrix: Array<any>): ColorFilter

{ if (this._matrix !=matrix)this._copyMatrix(matrix); var j=0; var z=0; for (var i=0;i < 20;i++){ if (i % 5 !=4){ this._mat[j++]=matrix[i]; }else { this._alpha[z++]=matrix[i]; } } return this;

}

    这个函数是有奇怪之处的:1. 根据函数的注释,输入参数matrix的length应该是20;2.  观察函数 _copyMatrix的实现,发现matrix的lengh应该是25。

    这个函数的目的是设置 _matrix, _mat, _alpha。_mat内容就是 _matrix的前4 X 4部分。_alpha是_matrix的最后一列的前4个元素。

相关文章

网友评论

      本文标题:颜色滤镜 - ColorFilter Laya

      本文链接:https://www.haomeiwen.com/subject/leecjqtx.html