将叠加层同步到置换贴图过滤器

时间:2011-12-13 07:57:04

标签: actionscript-3 filter mapping bitmapdata

我正在使用DisplacementMapFilter在平面地图上创建类似地球的效果。我的问题是,我还想将一些标签同步到这张地图。我在平面地图上有他们位置的x / y坐标,但是我需要将它们映射到现在位移的图像。

我希望能够使用包含置换贴图的BitmapData来执行此操作,以便更改位图会更改置换滤镜和标签位置。此外,标签不会是静态的,准确性也相当重要。

1 个答案:

答案 0 :(得分:2)

DisplacementMapFilter引用中有一个公式:

dstPixel[x, y] =
  srcPixel[
    x + ((componentX(x, y) - 128) * scaleX) / 256,
    y + ((componentY(x, y) - 128) *scaleY) / 256)
  ]

componentX/Y是位图中的颜色通道(您可以将任何通道绑定到坐标) 据我了解,您需要像过滤器一样移动地图标签。只需使用标签坐标(x,y),样本源位图getPixel32(x, y)。然后你需要弄清楚x,y要采用哪些字节 - 我猜默认它分别是R,G组件。然后使用公式来获得移位的标签坐标 注意:getPixel32以ARGB格式返回uint颜色。使用移位运算符(>>)来获取颜色分量:

uint ARGB = bitmap.getPixel32(x, y);
int B = ARGB & 0xFF;
int G = (ARGB >> 8) & 0xFF;
int R = (ARGB >> 16) & 0xFF;