launcher界面按中间键直接进入主菜单实现方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ch_xin/article/details/8364196
进入mainmenupush page。因为架构上idlemainmenu是在同一个VfxMainScr下的不同page

而默认的设计就是只有在shortcut bar上点击最右边的icon才能够launch mainmenu

目前的麻烦点应该是director不能直接访问到shortcut barCP.

这种情况有两种办法:

1.  增加public成员方法,开一路接口下去访问VappLauncherCosmosMmShortcutBar::pushMainmenuPage

算下里,directorshortcut barcosmos mm shortcut bar这三层都要开新的public接口才行。

也就是需要在这3个类VappLauncherCosmosDirector 、VappLauncherCosmosShortcutBar VappLauncherCosmosMmShortcutBar里面添加public的方法,使得可以访问到PushMainmenuPage.

这样改简单,不过在代码封装性上看起来有些丑陋。

2.  pushMainmenuPage里的内容捞出来,放到director类里新定义的一个成员函数内。

不过要注意的是,里面的m_mainmenu的与VappLauncherCosmosMmShortcutBarm_mainmenu要统一起来。所以可能要借助全局变量。

并且还要新建一个signalconnectVappLauncherCosmosDirector::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
}


 

 

猜你喜欢

转载自blog.csdn.net/ch_xin/article/details/8364196