Как сделать текстуру прозрачной?
Есть метод который увеличивает прозрачность текстуры. Он вызывается в методе render().
При вызове этого метода в аргументы ему передается значение 0.3f. Каждый цикл прозрачность повышается, в итоге получится 1.0f.
public void setUpTransparent(float alpha) {
up += 1;
Color rgbBatch = spritBbatch.getColor();
// Здесь маленькая пауза.
if (up > 100){
// Устанавливаем альфу.
batch.setColor(rgbBatch.r, rgbBatch.g, rgbBatch.b, alpha);
// Рисуем текстуру по заданным координатам.
batch.draw(textureIcon, rectangleIcon.x, rectangleIcon.y);
}
}
Как сделать так, что бы прозрачность текстуры убывала? Например, сейчас прозрачность 1.0f, а мне нужно что бы она упала у отрисованного обьекта до 0.1f. Как это сделать?
Ответы (1 шт):
Автор решения: Кирилл Новгородцев
→ Ссылка
Основная идея - это переменная, которая отвечает за прирост, которая меняет свой знак при достижении граничных значений. По сути, направление прироста, если можно так сказать.
if(alpha < 0 || alpha >= 1)
delta *= -1;
alpha += delta;
setUpTransparent(alpha);
За основу взял шаблон, который генерит сам libgdx по-умолчанию:
public class Alpha extends ApplicationAdapter {
private SpriteBatch batch;
private Texture image;
float alpha, delta;
@Override
public void create() {
batch = new SpriteBatch();
image = new Texture("libgdx.png");
alpha = 1f;
delta = 0.1f;
}
@Override
public void render() {
Gdx.gl.glClearColor(0.15f, 0.15f, 0.2f, 1f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
Color rgbBatch = batch.getColor();
batch.setColor(rgbBatch.r, rgbBatch.g, rgbBatch.b, alpha);
batch.draw(image, 140, 210);
batch.end();
if(alpha < 0 || alpha >= 1)
delta *= -1;
alpha += delta;
}