gpt4 book ai didi

java - 使用 libGDX 缩放和淡化启动屏幕以使其不被拉伸(stretch)的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-01 23:11:51 25 4
gpt4 key购买 nike

我正在 libGDX 中创建游戏,但在使用 com.badlogic.gdx.Screen 类和通用 Tween 引擎创建启动屏幕时遇到了一些麻烦。基本上我的问题是使图像不被拉伸(stretch)。做这个的最好方式是什么?我的代码如下:

package com.trohrt.tothemoon.screens;

import aurelienribon.tweenengine.Tween;
import aurelienribon.tweenengine.TweenManager;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.trohrt.tothemoon.ttm;
import com.trohrt.tothemoon.tween.SpriteAccessor;

public class Splash implements Screen {

private SpriteBatch batch;
private Texture texture;
private Sprite splash;
private TweenManager tweenManager;
private ttm ttm;

public Splash(ttm ttm) {
this.ttm = ttm;
}

@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

batch.begin();
splash.draw(batch);
batch.end();

tweenManager.update(delta);
}

@Override
public void resize(int width, int height) {
}

@Override
public void show() {
batch = new SpriteBatch();

tweenManager = new TweenManager();
Tween.registerAccessor(Sprite.class, new SpriteAccessor());

texture = new Texture("data/splash.png");
splash = new Sprite(texture);

Tween.set(splash, SpriteAccessor.ALPHA).target(0).start(tweenManager);
Tween.to(splash, SpriteAccessor.ALPHA, 2).target(1).start(tweenManager);
Tween.to(splash, SpriteAccessor.ALPHA, 2).target(0).delay(3).start(tweenManager);
}

@Override
public void hide() {
dispose();
}

@Override
public void pause() {
}

@Override
public void resume() {
}

@Override
public void dispose() {
batch.dispose();
splash.getTexture().dispose();
}

}

目前我可以让图像出现和淡出,但我希望它居中,而不是卡在窗口的左下角或拉伸(stretch)。

最佳答案

而不是

splash.draw(batch);

你可以打电话

batch.draw(
splash,
Gdx.graphics.getWidth() / 2f - splash.getRegionWidth() / 2f,
Gdx.graphics.getHeight() / 2f - splash.getRegionHeight() / 2f,
splash.getRegionWidth(),
splash.getRegionHeight()
);

为了避免在屏幕调整大小时拉伸(stretch),请添加以下内容:

@Override
public void resize(int width, int height) {
batch.getProjectionMatrix().setToOrtho2D(0, 0, width, height);
}

要允许淡入淡出,请在 batch.begin(); 之后添加此内容:

batch.setColor(splash.getColor());

希望这有帮助。

关于java - 使用 libGDX 缩放和淡化启动屏幕以使其不被拉伸(stretch)的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21812703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com