Android 演员的位置有时不会改变
我尝试了几乎所有我能做的,但我仍然不能理解这一点。当加载底部广告时,我使用以下方法之一更改演员的高度和y:setPosition+setSize、setY+setHeight和setBounds。几乎每7次从10个高度变化,但位置不是!。我在游戏类中使用adListener调用onAdLoad方法,它在屏幕中调用onAdLoad方法。我将Gdx.app.log放在onAdLoad Screen方法的末尾,它写入了演员的y坐标,它写入了新的y坐标,这是正确的,但当我从render方法写入y坐标时,它是0。请帮我做这个 一些代码: AndroidLauncher类onCreate方法:Android 演员的位置有时不会改变,android,libgdx,scene2d,Android,Libgdx,Scene2d,我尝试了几乎所有我能做的,但我仍然不能理解这一点。当加载底部广告时,我使用以下方法之一更改演员的高度和y:setPosition+setSize、setY+setHeight和setBounds。几乎每7次从10个高度变化,但位置不是!。我在游戏类中使用adListener调用onAdLoad方法,它在屏幕中调用onAdLoad方法。我将Gdx.app.log放在onAdLoad Screen方法的末尾,它写入了演员的y坐标,它写入了新的y坐标,这是正确的,但当我从render方法写入y坐标时,
adView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
Gdx.app.log("AdView:", "AdLoaded");
if (adView.getVisibility() == View.VISIBLE)
game.onAdLoad(adView.getHeight());
}
});
游戏类别:
public void onAdLoad(int adHeight) {
adsHeight = adHeight;
MyScreen activeScreen = ((MyScreen) getScreen());
if (activeScreen != null) {
activeScreen.onAdLoad();
}
}
MyScreen界面:
public interface MyScreen extends Screen {
void onAdLoad();
}
和其中一个屏幕:
private Table mainMenu;
@Override
public void onAdLoad() {
float adsHeight = MyGdxGame.adsHeight;
// mainMenu.setBounds(0, adsHeight, Gdx.graphics.getWidth(),Gdx.graphics.getHeight() - adsHeight);
Gdx.app.log("onAdLoad",adsHeight+"");
mainMenu.setHeight(Gdx.graphics.getHeight() - adsHeight);
mainMenu.setY(adsHeight);
Gdx.app.log("onAdLoad", mainMenu.getY() + "");
// mainMenu.setPosition(0, adsHeight);
// mainMenu.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight() - adsHeight);
// mainMenu.layout();
}
UPD:这也不起作用:
public void onAdLoad() {
//...
stage.getActors().clear();
stage.addActor(mainMenu);
}
在为参与者设置新位置后,您是否尝试调用requestLayout?请给我们一些代码和解释。真的很难判断到底发生了什么。我在onAdLoad的末尾尝试了actor.layout,但没有任何帮助。你是否尝试过将该演员移除并重新添加到舞台上?是的,我尝试过,它不起作用。没有更多建议吗?我真的需要帮助!