2009-11-04 74 views

回答

5

您可以實現它的屏幕的數組,並在循環推動他們。但在推新之前不要忘記拉電流屏幕。

它的應用程序將處理屏幕切換,它也將處理屏幕陣列。但是菜單被放置在屏幕上,所以我們必須在屏幕和應用程序類之間進行一些通信。

讓我們有一些聽衆屏切換:

interface IBarrelListener { 
    public void goPreviouse(); 

    public void goNext(); 
} 

現在我們可以實現屏幕與此偵聽器和相應的菜單:

class ABarrelScreen extends MainScreen { 
    IBarrelListener mBarrelListener; 

    public ABarrelScreen(IBarrelListener barrelListener) { 
     super(); 
     mBarrelListener = barrelListener; 
    } 

    protected void makeMenu(Menu menu, int instance) { 
     super.makeMenu(menu, instance); 
     menu.add(goPreviouseMenuItem); 
     menu.add(goNextMenuItem); 
    } 

    MenuItem goPreviouseMenuItem = new MenuItem("go previouse", 0, 0) { 
     public void run() { 
      mBarrelListener.goPreviouse(); 
     }; 
    }; 

    MenuItem goNextMenuItem = new MenuItem("go next", 0, 0) { 
     public void run() { 
      mBarrelListener.goNext(); 
     }; 
    }; 
} 

與應用類本身:

public class ScrCircleApp extends UiApplication implements IBarrelListener { 

    ABarrelScreen[] mScreens = generateScreens(); 
    int mCurrentScreen = 0; 

    public ScrCircleApp() { 
     pushScreen(mScreens[mCurrentScreen]); 
    } 

    public static void main(String[] args) { 
     ScrCircleApp app = new ScrCircleApp(); 
     app.enterEventDispatcher(); 
    } 

    private ABarrelScreen[] generateScreens() { 
     ABarrelScreen[] screens = new ABarrelScreen[6]; 
     for (int i = 0; i < screens.length; i++) { 
      screens[i] = new ABarrelScreen(this); 
      screens[i].add(new LabelField("This is screen # " 
        + String.valueOf(i))); 
     } 
     return screens; 
    } 

    public void goNext() { 
     popScreen(mScreens[mCurrentScreen]); 
     mCurrentScreen++; 
     if (mCurrentScreen >= mScreens.length) 
      mCurrentScreen = 0; 
     pushScreen(mScreens[mCurrentScreen]); 
    } 

    public void goPreviouse() { 
     popScreen(mScreens[mCurrentScreen]); 
     mCurrentScreen--; 
     if (mCurrentScreen < 0) 
      mCurrentScreen = mScreens.length - 1; 
     pushScreen(mScreens[mCurrentScreen]); 
    } 
} 

alt text http://img526.imageshack.us/img526/2372/screenbarrel.jpg

+1

這就是我所需要的,全都在那裏。每次都會爆炸@點。謝謝。 – Bohemian 2009-11-04 15:04:44

+0

不客氣! – 2009-11-04 15:45:05

0
getUiEngine().pushScreen(new MyNextScreen()); 

使用此功能以顯示另一個屏幕