另一个libgdx组问题。我试图用Slider覆盖Image actor。滑块的高度为55,下面是bgImage,也应该有55的高度。我正在使用此代码。目标是实现完全叠加,因为顶部的滑块是半透明的。问题是bgImage的高度与滑块(55)不同,即使我用setHeight()
方法设置它。我在渲染方法中跟踪了bgImage的高度。结果很有趣。只有第一次调用渲染时,bgImage的高度为55,在所有后续渲染调用中,bgImage的高度为140,因此弄乱了我的用户界面。高度变化的原因是什么?解决方法是什么?感谢帮助。
Texture bgTexture=new Texture("underImage.png");
bgImage= new Image(new TextureRegionDrawable(new TextureRegion(bgTexture)));
bgImage.setColor(Color.BLUE);
bgImage.setWidth(hueSlider.getStyle().background.getMinWidth());
bgImage.setPosition(0, 0);
bgImage.setHeight(55);
bgImage.setBounds(0,0,hueSlider.getWidth(),55);
Texture overlayTexture=new Texture("gradientOverlay3.png");
Slider.SliderStyle ss2=new Slider.SliderStyle();
ss2.background= new TextureRegionDrawable(new TextureRegion(overlayTexture));
ss2.knob= new TextureRegionDrawable(new TextureRegion(th));
brightnessSlider=new Slider(1,100,1,false,ss2);
stack=new Stack();
stack.add(bgImage);
stack.add(brightnessSlider);
verticalGroup.addActor(hueSlider);
verticalGroup.addActor(stack);
table.add(verticalGroup).width(365).fillX();
stage.addActor(table);
编辑:brighntessSlider位于顶部,它的高度与我用于背景的图像的高度相同,即55.
这是render方法的实现。见第二个sout声明。那时的高度已经是140. Veeeery很奇怪。
public void render () {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
System.out.println("height" + bgImage.getHeight());
camera.update();
batch.begin();
batch.end();
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
System.out.println("height" + bgImage.getHeight());
}