2016年5月27日 星期五

0526 cocos2d-x 3.9 點擊 判別方式

1.早期cocos2d-x 2.x 1.x 時 判斷點集 需要自己手動轉座標,不僅要算出母節點位置還要
setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);  都要固定在左下角,才方便計算

但是在cocos2d-x 3.x 可以改用 convertTouchToNodeSpace(Touch touch) 來做判別
不用再理會上層結點
//自用範例
m_NodeVectors 是我自己先將要偵測的原件 用NODE 方式存放起來
checkTouchNode 則是自己新增的 在NODE 增加不TOUCH的變數


int UIPAGE::checkItemByTouch(Touch* touch)
{
    auto sprites=m_NodeVectors.at(pageType);
    auto bTouch =false;
    for(auto pSprite:*sprites)
    {
        auto iIdx=pSprite->getTag();
        if(pSprite->isVisible() && checkTouchNode(iIdx))
        {
            Vec2 touchPost=pSprite->convertTouchToNodeSpace(touch);   //轉換座標
            Size boxSize=pSprite->getContentSize();  //取得想要TOUCH的範圍
            Rect boxRect=Rect(0,0,boxSize.width,boxSize.height); //統一右下角畫出
            bTouch = boxRect.containsPoint(touchPost);   //進行判別 PS:就算旋轉 也可以喔
            if(bTouch)
            {
                return iIdx;
                break;
            }
        }
    }
    return -1;
}


沒有留言:

張貼留言

cocos2dx-lua 建立滑鼠監聽

重要關鍵字  EVENT_MOUSE_SCROLL addEventListenerWithSceneGraphPriority      if IsPc() then --建立滑鼠監聽         local listener = cc.EventListenerMouse...