Программно исчезает изображение в PlayN

Я работаю над игрой с использованием PlayN, и есть немного, где я хотел бы сделать изображение (которое в настоящее время в формате PNG, уже с 8-битной альфа-версией), и я хотел бы умножить изображение на дополнительный альфа-фактор на основе значения из моего кода.

В частности, у меня есть изображение лица, которое в настоящее время живет в 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, нарисованным сплошным белым прямоугольником с прозрачностью, контролируемой моим кодом, но для меня не очевидно, является ли это лучшим способом достичь того, что кажется довольно распространенным эффектом.

1 ответ

Решение

Если вы просто хотите сделать изображение более прозрачным или полностью непрозрачным, просто сделайте следующее:

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);
}

Где альфа колеблется от 0 (полностью прозрачный) до 1 (полностью непрозрачный).

Другие вопросы по тегам