2

我正在使用 PlayN 开发游戏,我想在某些地方拍摄图像(目前是 PNG 格式,已经具有 8 位 alpha),我想将图像乘以一个额外的 alpha 因子,基于我的代码中的值。

具体来说,我有一张当前存在于 ImageLayer 中的人脸图片,我想要的效果是这样的:

void init() {
  faceImage = assetManager().getImage("images/face.png");
  graphics().rootLayer().add(faceImage);
}

void update(float deltaMilliseconds) {
  // start at fully transparent, fade to fully opaque 
  float transparency = calcTransparency(deltaMilliseconds);
  faceImage.setTransparency(transparency);
}

我希望有一些方法可以使用 GroupLayers 和混合模式做一些棘手的事情,也许将图像与画有纯白色矩形的 CanvasLayer 混合,透明度由我的代码控制,但如果这是实现目标的最佳方法,对我来说并不明显似乎是一个很常见的效果。

4

1 回答 1

2

如果您只想将图像从完全透明淡入到完全不透明,那么只需执行以下操作:

ImageLayer faceLayer;
void init() {
  Image faceImage = assetManager().getImage("images/face.png");
  faceLayer = graphics().createImageLayer(faceImage);
  graphics().rootLayer().add(faceLayer);
}

void update(float delta) {
  float alpha = calcAlpha(delta);
  faceLayer.setAlpha(alpha);
}

其中 alpha 范围从 0(完全透明)到 1(完全不透明)。

于 2012-01-17T16:46:46.987 回答