libgdx遊戲引擎(七)之多遊戲界面的實現

        libgdx的遊戲框架:

    

     

      也就是說,我們一開始都是新建一個AndroidApplication然後調用initialize()方法啓動一個實現了ApplicationListener的實例即進入了libgdx的週期。因此一個ApplicationListener就好像是一個遊戲容器,一個容器就是一個遊戲界面,我們在這個遊戲界面中進行着各種操作,可是當我們必須要切換界面的時候怎麼辦呢?畢竟所有的繪製和邏輯工作都放在一個界面裏未免太麻煩了。既然一個ApplicationListener就是一個遊戲容器,那麼我們能不能讓一個AndroidApplication管理多個ApplicationListener呢?事實證明這個思路是完全正確的。

       Libgdx正是用這個方法實現多界面切換的。首先我們需要看看libgdx中的API中給我們提供的兩個類Game和Screen。首先看一看Game這個類,官方文檔中的解釋如下:

public abstract class Gameextends java.lang.Objectimplements ApplicationListener

看看它的方法:

      我們看到其實一個Game就是一個實現了ApplicationListener接口的類,它實現了所有ApplicationListener的方法,也就是說,它也可以用AndroidApplication的initialize()方法啓動。那又怎麼做到多界面的切換呢?我們可以看到其中一個setScreen()方法,沒錯,我們就是用這個setScreen()方法進行切換。

       我們再看看Screen類。

       public interface Screen

    同樣看看它的方法

      

     我們發現,Screen是一個接口,就像我們直接實現ApplicationListener一樣,它也有dispose(),pause(),render()方法,但它還多了hide(),show()等方法(顧名思義,就是在顯示和隱藏時分別調用),下面我們看一下框架圖:

倚天一出,誰與爭鋒啊。此圖一出,一切都明白了。解決方案就是在AndroidApplication中持有一個Game,Game中持有一個或者多個Screen,然後initialize方法中的第一個參數傳入這個Game,在需要切換屏幕的時候調用Game的setScreen()方法就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章