今天下載了最新版本 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);
}
寫下此文,只希望有朋友也遇上這個問題的時候能夠得到幫助