libgdx 同步screen的dispose和game的dispose

来源:互联网 发布:java获取时间戳时分秒 编辑:程序博客网 时间:2024/05/06 22:21
private class MainGame extends  Game    {        MainGame(Screen screen)        {            this.screen=screen;        }        @Override        public void create()        {            setScreen(screen);        }        @Override        public void dispose()        {            super.dispose();            screen.dispose();        }    }

我们看看Game的源码:

public abstract class Game implements ApplicationListener {    protected Screen screen;    public Game() {    }    public void dispose() {        if(this.screen != null) {            this.screen.hide();        }    }    public void pause() {        if(this.screen != null) {            this.screen.pause();        }    }    public void resume() {        if(this.screen != null) {            this.screen.resume();        }    }    public void render() {        if(this.screen != null) {            this.screen.render(Gdx.graphics.getDeltaTime());        }    }    public void resize(int width, int height) {        if(this.screen != null) {            this.screen.resize(width, height);        }    }    public void setScreen(Screen screen) {        if(this.screen != null) {            this.screen.hide();        }        this.screen = screen;        if(this.screen != null) {            this.screen.show();            this.screen.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());        }    }    public Screen getScreen() {        return this.screen;    }}
Game.dispose()的时候screen是hide的,所以如果你将screen的内存释放写在dispose()函数中的话就要将自定义game中加上
@Override        public void dispose()        {            super.dispose();            screen.dispose();        }


0 0