最近我们遇到了关于在LibGDX的Stage API中拉伸ImageButton的问题。
我们有一个图形密集的游戏,可以根据您的屏幕选择纹理图标(HDPI,MDPI或LDPI等)
我们使用480x854构建我们的游戏作为虚拟分辨率,并使用不同设备上的视口很好地缩放。 我们明确设置每个精灵大小,以确保无论源纹理的大小如何都能很好地扩展。
然而,有时可能会发生纹理略大于或小于显示的实际尺寸(例如,320x480的分辨率将选择ldpi,但图像略小于它显示的精灵)上)
出于某种原因,ImageButton无法很好地工作。 这是我尝试的一个例子(在一个imagebutton子类中):
@Override
public void setSize(float w, float h) {
super.setSize(w, h);
if (this.getImage() != null) {
//this.getImageCell().expand().fill();
this.getImage().setSize(w, h);
this.getImage().setScaling(Scaling.stretch);
//this.getImage().invalidate();
this.invalidate();
}
}
我想要实现的是,当我调用button.setSize(300,320)时,它实际上将图像拉伸为300x320。但相反,它要么使用源图像的原始大小显示按钮(上面没有解决方法),要么使用上面的解决方法显示它完全清洗/拉伸(也超出比例)。
我希望有人可能会对此有一个很好的解决方法,我现在已经在这个问题上敲了两天:(
非常感谢!祝周末愉快!
更新 我设法现在正确地显示图像按钮,但在我曾经使用的面板之外。在面板内部它再次显示出奇怪的效果。我会保持最新状态,当我自己找到它时,我会发布一个有效的答案。