和引擎菜单场景 - 不能点击按钮



我有一个小问题与android &andengine。这是我的主菜单的源代码

// AbstractScene is extending Scene
public class MainMenuScene extends AbstractScene implements
        IOnMenuItemClickListener {
    private static final int MENU_CREATE = 10;
    private static final int MENU_JOIN = 20;
    private static final int MENU_ABOUT = 30;
    private static final int MENU_SETTINGS = 40;
    MenuScene scene;
    @Override
    public void loadResources() {
        res.loadMenuResources();
    }
    @Override
    public void create() {
        // Background
        setBackground(new Background(0.09804f, 0.6274f, 0.8784f));
        // Buttons
        scene = new MenuScene(res.camera);
        //scene.setPosition(GameActivity.WIDTH_CENTER, GameActivity.HEIGHT_CENTER);
        final SpriteMenuItem createGameMenuItem = new SpriteMenuItem(
                MENU_CREATE, res.createRegion, res.vbom);
        final SpriteMenuItem joinGameMenuItem = new SpriteMenuItem(MENU_JOIN,
                res.joinRegion, res.vbom);
        final SpriteMenuItem aboutMenuItem = new SpriteMenuItem(MENU_ABOUT,
                res.aboutRegion, res.vbom);
        final SpriteMenuItem settingsMenuItem = new SpriteMenuItem(
                MENU_SETTINGS, res.settingsRegion, res.vbom);
        scene.addMenuItem(createGameMenuItem);
        scene.addMenuItem(joinGameMenuItem);
        scene.addMenuItem(aboutMenuItem);
        scene.addMenuItem(settingsMenuItem);
        scene.buildAnimations();
        scene.setBackgroundEnabled(false);
        scene.setOnMenuItemClickListener(this);
        setChildScene(scene, false, true, true);
    }

    @Override
    public boolean onMenuItemClicked(MenuScene pMenuScene, IMenuItem pMenuItem,
            float pMenuItemLocalX, float pMenuItemLocalY) {
        Log.d("Menuitem", "click");
        switch (pMenuItem.getID()) {
        case MENU_CREATE:
            return true;
        case MENU_JOIN:
            SceneManager.getInstance().showScene(SceneType.LISTGAMES);
            return true;
        case MENU_ABOUT:
            return true;
        case MENU_SETTINGS:
            return true;
        default:
            return false;
        }
    }
}

这是我在ResourceManager上的代码

// menu ressources
public void loadMenuResources() {
    BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
    menuAtlas = new BuildableBitmapTextureAtlas(activity.getTextureManager(),
            1024, 1024, BitmapTextureFormat.RGBA_8888, TextureOptions.BILINEAR);
    createRegion = BitmapTextureAtlasTextureRegionFactory
            .createFromAsset(menuAtlas, activity.getAssets(), "btn_create_game.png");
    joinRegion = BitmapTextureAtlasTextureRegionFactory
            .createFromAsset(menuAtlas, activity.getAssets(), "btn_join_game.png");
    settingsRegion = BitmapTextureAtlasTextureRegionFactory
            .createFromAsset(menuAtlas, activity.getAssets(), "btn_settings.png");
    aboutRegion = BitmapTextureAtlasTextureRegionFactory
            .createFromAsset(menuAtlas, activity.getAssets(), "btn_about.png");
    try {
        menuAtlas.build(new BlackPawnTextureAtlasBuilder<IBitmapTextureAtlasSource, BitmapTextureAtlas>(0, 0, 0));
        menuAtlas.load();
    } catch (TextureAtlasBuilderException e) {
        throw new RuntimeException("Error while loading menu resources", e);
    }
}

我的问题是,OnMenuItemClickListener没有被调用,我不知道为什么。大部分代码是从官方示例中复制的。我的应用程序显示背景菜单按钮等,但我不能点击一个。

有人知道为什么吗?谢谢!

您缺少一个寄存器触摸区域调用

 scene.registerTouchArea(createGameMenuItem);
 scene.registerTouchArea(joinGameMenuItem);
 scene.registerTouchArea(aboutMenuItem);
 scene.registerTouchArea(settingsMenuItem);

最新更新