2009-11-04 107 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()); 

使用此功能以显示另一个屏幕