2015-06-21 38 views
1

經過數週的調試,我很難弄清楚cocos2d :: Menu發生了什麼。當我點擊按鈕時,我的MenuItemImage沒有收到回調令人驚訝。所以我點擊任何其他地方的挫折和繁榮,當我點擊左下角,回調註冊!cocos2d ::無論何時使用自定義窗口大小,菜單點擊檢測都有點偏離左下角

它向左下方偏離一點,想知道可能會導致這種情況?我已經使用原樣提供的蹩腳示例項目重現了問題,但無法使用默認窗口大小重現此問題。但是,當我更改爲自定義尺寸時,問題現在可以重現。我還注意到,檢測範圍似乎不是給定MenuItemImage的實際形狀。它有點廣場。

我在這裏處於困境。這真令人沮喪。文檔和社區與地獄一樣無益。

我正在使用cocos2d-x v3.6;

這裏是我的代碼:

mRetryButton = cocos2d::MenuItemImage::create("asset_button_up.png", "asset_button_down.png", CC_CALLBACK_1(MainGameScene::onRetryButtonClicked, this)); 
mRetryButton->setPosition(cocos2d::Vec2(screenSize.width/2.0f, screenSize.height/2.0f)); 

auto menu = cocos2d::Menu::create(mRetryButton, NULL); 
menu->setPosition(cocos2d::Vec2::ZERO); 

this->addChild(menu, 1); 

你知道的任何解決這個?還是我只是可怕地錯過了什麼?我只需要一個簡單的屏幕上的按鈕。沒有什麼花哨。只是普通的沉悶的按鈕。

謝謝!

回答

0

我修好了!

我嘗試了很多方法來創建按鈕。他們都表現出類似的行爲。

改變screenSize一定有問題。我犯了一個可怕的錯誤。

AppDelegate::applicationDidFinishLaunching當它第一次初始化glview時,有人告訴我爲了改變屏幕大小,我需要調用這個:cocos2d::Director::getInstance()->getOpenGLView()->setFrameSize(width , height)。我在此特定行之後設置它,使其看起來像這樣:

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

director->getOpenGLView()->setFrameSize(width , height); 

這是錯誤的。在導演設置OpenGL視圖後執行此操作會註冊原始的96​​0,640屏幕大小,這些大小可以在所有場景,圖層和節點上進行迴響。每次在調試器上檢查有問題的節點的內容大小(按鈕的大小爲(140,40))時,默認爲原始屏幕大小。這個不對。那裏有問題。如果您自己手動設置內容大小,這不會被修復。我認爲,通過錯誤地設置屏幕尺寸,導演設置GL視圖時,某些節點的內容尺寸會變得不對齊或無法正確計算。改變屏幕的正確方法是這樣的:

auto director = Director::getInstance(); 
auto glview = director->getOpenGLView(); 
if(!glview) { 
    glview = GLViewImpl::create("My Game"); 
    glview->setFrameSize(370, 480); 
    director->setOpenGLView(glview); 
} 

現在,點擊檢測範圍,位置和大小,正好套住精靈圖像,現在可以接收回調!對於*(#$ * ing兩個星期,我明白了)

我希望這能幫助未來的人!