Программно исчезает изображение в PlayN - PullRequest
2 голосов
/ 17 января 2012

Я работаю над игрой с использованием 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 Ответ

2 голосов
/ 17 января 2012

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

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 (полностью непрозрачный)).

...