我几乎完成了我的LibGDX项目,现在我只是添加了用户友好性。 我有一个纹理(也放在一个精灵中),我想淡入并反复淡出(不快速闪烁)。它只是一个矩形的时髦文字,上面写着“触摸开始”。
无法想到要添加的任何相关代码,感谢您的帮助
修改
Gdx.gl.glClearColor(0, 0, 0.2f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(touchToStartImage, screenWidth / 2 - touchToStartImage.getWidth() / 2, screenHeight / 2 - touchToStartImage.getHeight() / 2);
elapsed += Gdx.graphics.getDeltaTime();
blinkFontCache.setAlphas(Interpolation.fade.apply((elapsed / 0.01f) % 1f));
blinkFontCache.draw(batch);
blinkFontCache.translate(2f, 2f);
batch.end();
我还定义了blinkFontCache = new BitmapFontCache(numberPrinter);
,其中numberPrinter是应该绘制文本的bitmapfont。我已经阅读了Interpolation和blinkFontCache的API指南,但不幸的是,上面我没有注意到我的屏幕有任何变化。感谢
解
使用INTERPOLATION进行编辑
elapsed += Gdx.graphics.getDeltaTime();
touchToStartSprite.setAlpha(Interpolation.fade.apply((elapsed / FADE_TIME) % 1f));
blinker.begin();
touchToStartSprite.draw(batch);
blinker.end();
使用操作编辑
定义
text = new Image(highScoreImage);
text.addAction(Actions.alpha(0));
text.act(0);
text.addAction(Actions.forever(Actions.sequence(Actions.fadeIn(FADE_TIME), Actions.fadeOut(FADE_TIME))));
渲染()
blinker.begin();
text.act(Gdx.graphics.getDeltaTime());
text.draw(blinker, 1);
blinker.end();
答案 0 :(得分:2)
您可以使用scene2d中的Image
类,这是一个可以获取纹理区域的actor,并为您提供了几个有用的方法。这是一个实现。
Image text = new Image(clickToStartRegion);
Float fadeTime = 1f;
//...
text.addAction(Actions.alpha(0)); //make the text transparent.
text.act(0); //update the text once
text.addAction(Actions.sequence(Actions.fadeIn(fadeTime), Actions.fadeOut(fadeTime));
//...
text.act(deltaTime);
//...
text.draw(batch, 1);
答案 1 :(得分:1)
您可以使用插值类作为alpha。假设您正在使用Sprite来绘制它:
private float elapsed;
private static final float FADE_TIME = 1f; //time between blinks
//...
elapsed += deltaTime;
sprite.setAlpha(Interpolation.fade.apply((elapsed / FADE_TIME) % 1f));
//...
spriteBatch.begin();
sprite.draw(spriteBatch);
spriteBatch.end();