關於 Cocos2d-x 中使用 setFrameSize 後 MenuItem 失效

今天下載了最新版本  Cocos2d-x v3.6 嚐嚐鮮,然而發現了一個問題:

當時爲了便於在 windows 下調試,我想把窗口調小一點,於是在 AppDelegate.cpp 文件中加入了以下代碼:

	// Windows下調試使用
	if (getTargetPlatform() == cocos2d::ApplicationProtocol::Platform::OS_WINDOWS)
	{
		Director::getInstance()->getOpenGLView()->setFrameSize(480, 320);
	}


 然後我發現程序中所有的 MenuItemImage 都不工作了,不僅僅是無法觸發 CallBack 函數,而且正常情況下點擊 MenuItemImage 能夠產生的 normal 和 selected 顯示效果也沒有了。就好像這個按鈕是背景的一部分一樣,如圖:

然而,只要把 setFrameSize 設置爲 960,640的話,所有 MenuItem 又恢復正常

Director::getInstance()->getOpenGLView()->setFrameSize(960, 640);

 

經過測試 不僅僅是 MenuItemImage 有這個問題,其他的如  MenuItemFont 也會這樣

不知道這是否是 cocos2d-x 引擎的一個 bug

=================================================================================

解決方法:

跟官方反饋後,官方給出了答覆:

原來是這樣,解決方法就簡單了:

    auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLViewImpl::create("My Game");

        // Windows下調試使用
        if (getTargetPlatform() == cocos2d::ApplicationProtocol::Platform::OS_WINDOWS)
        {
            glview->setFrameSize(480, 320);
        }

        director->setOpenGLView(glview);
    }

寫下此文,只希望有朋友也遇上這個問題的時候能夠得到幫助

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章