Libgdx 在像素图上绘制 semi-transparent 圆
Libgdx drawing semi-transparent circle on pixmap
我目前正在使用 libgdx 开发一个 android 游戏,我想在其界面上添加一个操纵杆。为此,我使用 built-in 触摸板 class。到目前为止,我一直使用外部图像来渲染背景和操纵杆。现在,我想动态绘制操纵杆的背景。这样就可以制作操纵杆的背景 semi-transparent 并动态更改背景颜色。
为此,我执行了以下操作:
public class Joystick{
private Touchpad touchpad;
private static TouchpadStyle touchpadStyle;
private Skin touchpadSkin;
public Joystick(GameWorld world, GuiComponent gui) {
touchpadSkin = new Skin();
touchpadSkin.add("touchKnob", new Texture("data/touchKnob.png"));
touchpadStyle = new TouchpadStyle();
touchpadStyle.knob = touchpadSkin.getDrawable("touchKnob");;
Pixmap background = new Pixmap(200, 200, Format.RGBA8888);
background.setColor(1, 1, 1, .6f);
background.fillCircle(100, 100, 100);
touchpadStyle.background = new TextureRegionDrawable(new TextureRegion(new Texture(background)));
touchpad = new Touchpad(10, touchpadStyle);
touchpad.setBounds(15, 15, 200, 200);
gui.inputStage.addActor(touchpad);
}
}
如您所见,这段代码提供了一个带有 semi-transparent 背景的操纵杆:
不过这个背景有些莫名其妙的纹路不透明。有人知道是什么原因造成的吗?本来以为是pixmap格式的问题,试了其他格式后,并没有太大的改善。
我终于通过禁用像素图混合解决了这个问题。
Pixmap.setBlending(Blending.None);
我目前正在使用 libgdx 开发一个 android 游戏,我想在其界面上添加一个操纵杆。为此,我使用 built-in 触摸板 class。到目前为止,我一直使用外部图像来渲染背景和操纵杆。现在,我想动态绘制操纵杆的背景。这样就可以制作操纵杆的背景 semi-transparent 并动态更改背景颜色。
为此,我执行了以下操作:
public class Joystick{
private Touchpad touchpad;
private static TouchpadStyle touchpadStyle;
private Skin touchpadSkin;
public Joystick(GameWorld world, GuiComponent gui) {
touchpadSkin = new Skin();
touchpadSkin.add("touchKnob", new Texture("data/touchKnob.png"));
touchpadStyle = new TouchpadStyle();
touchpadStyle.knob = touchpadSkin.getDrawable("touchKnob");;
Pixmap background = new Pixmap(200, 200, Format.RGBA8888);
background.setColor(1, 1, 1, .6f);
background.fillCircle(100, 100, 100);
touchpadStyle.background = new TextureRegionDrawable(new TextureRegion(new Texture(background)));
touchpad = new Touchpad(10, touchpadStyle);
touchpad.setBounds(15, 15, 200, 200);
gui.inputStage.addActor(touchpad);
}
}
如您所见,这段代码提供了一个带有 semi-transparent 背景的操纵杆:
不过这个背景有些莫名其妙的纹路不透明。有人知道是什么原因造成的吗?本来以为是pixmap格式的问题,试了其他格式后,并没有太大的改善。
我终于通过禁用像素图混合解决了这个问题。
Pixmap.setBlending(Blending.None);