而默认的设计就是只有在shortcut bar上点击最右边的icon才能够launch mainmenu。
目前的麻烦点应该是director不能直接访问到shortcut bar的CP.
这种情况有两种办法:
1. 增加public成员方法,开一路接口下去访问VappLauncherCosmosMmShortcutBar::pushMainmenuPage
算下里,director,shortcut bar和cosmos mm shortcut bar这三层都要开新的public接口才行。
也就是需要在这3个类VappLauncherCosmosDirector 、VappLauncherCosmosShortcutBar 、VappLauncherCosmosMmShortcutBar是里面添加public的方法,使得可以访问到PushMainmenuPage.
这样改简单,不过在代码封装性上看起来有些丑陋。
。
2. 把pushMainmenuPage里的内容捞出来,放到director类里新定义的一个成员函数内。
不过要注意的是,里面的m_mainmenu的与VappLauncherCosmosMmShortcutBar的m_mainmenu要统一起来。所以可能要借助全局变量。
并且还要新建一个signal,connect上VappLauncherCosmosDirector::onMainMenuLaunched,在按下key的时候postEmit出去。
第2种方法稍微复杂点,但是由于有两个地方可以launch mainmenu,所以这两处要sync好。走进来都要先check mainmenu对象是否已存在。
因此可能要借助全局变量来实现,这需要改动到类的一些code,改起来要复杂些。
不过根据以上思路修改后又出现了一个新的问题:增加按back键进入主菜单,快速连续按back键后返回idle界面触屏无作用,导致触屏失效了。于是我们需要如下修改才能解决问题。
void VappLauncherPage::onEntered()
{
VfxPage::onEntered();
if (m_launcher)
{
m_launcher->entered();
}
#ifdef __CHERRY_CUST__
setIsUnhittable(VFX_FALSE);
#endif
}