【发布时间】:2015-10-13 19:33:56
【问题描述】:
由于我是 Libgdx 开发的新手,我想问一下是否可以使用它制作图像边框(将其标记为选中)?我读过一种解决方案是制作两张单独的图像:一张有边框,一张没有。然而,我几乎所有的图像都是相同大小的,而且其中有很多,所以不知道这是否是最好的主意。还有其他选择吗?
编辑
所以我选择了第二个想法(1x1 图像),但它存在一些问题。首先,我不能使该borderImage 处于单击元素之下。另一个问题是borderImage 的大小(不一样)。当我单击按钮的中心时,它比单击边缘时更小(大约几个像素)。你知道什么会导致这些问题以及如何解决这些问题吗? 代码:
public void create(){
stage = new Stage();
Gdx.input.setInputProcessor(stage);
skin = new Skin(Gdx.files.internal("data/uiskin.json"));
Texture borderTexture = new Texture(Gdx.files.internal("data/select.png") );
final Image borderImage = new Image( borderTexture );
TextButton exitButton = new TextButton("Exit",skin);
exitButton.addListener(new ClickListener(){
public void clicked(InputEvent event, float x, float y)
{
borderImage.setSize( event.getTarget().getWidth() + 1 * 2, event.getTarget().getHeight() + 1 * 2);
Vector2 loc = new Vector2(0, 0);
Vector2 stageLoc = event.getTarget().localToStageCoordinates(loc);
borderImage.setPosition( stageLoc.x, stageLoc.y);
System.out.println("" + event.getTarget().getWidth() + " " +event.getTarget().getHeight() + " " + event.getTarget().getX() +
" " + event.getTarget().getY() + " " + stageLoc.x + " " + stageLoc.y);
stage.addActor(borderImage);
}
}
);
Table table = new Table();
table.add(exitButton).colspan(3);
table.setFillParent(true);
stage.addActor(table);
}
我的输出: 29.0 25.0 4.0 1.0 466.0 257.0 // 点击按钮中心 37.0 27.0 462.0 256.0 462.0 256.0 // 点击按钮边缘
【问题讨论】: