2016年5月17日 星期二

0517 cocos2d touch 觸碰偵測


 1.說明:
 改用 convertToNodeSpace 此函數偵測碰觸範圍
2. 每次皆需要根據 getContentSize 重新建立範圍
  不可以用 getBox....

bool UIMap::onTouchBegan(Touch* touch, Event* event)

{

    auto target = static_cast<Layer*>(event->getCurrentTarget());

    if(target==nullptr)

    {

        return true;

    }

    log("%s",__PRETTY_FUNCTION__);

// Vec2 touchLocation = touch->getLocation();

// Vec2 nodePosition = target->convertToNodeSpace( touchLocation );

if(!isVisible())

return false;

//    int iSel=checkTouchItem(nodePosition);

    int iSel=checkItemByTouch(touch);
}


//改用其他函數 避免因為座標系統不一致會有問題

int UIPAGE::checkItemByTouch(Touch* touch)

{

    auto sprites=m_NodeVectors.at(PG_REMOTEMAIN);

    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();

            Rect boxRect=Rect(0,0,boxSize.width,boxSize.height);

            bTouch = boxRect.containsPoint(touchPost);

            if(bTouch)

            {

                return iIdx;

                break;

            }

        }

    }

    return -1;

}

沒有留言:

張貼留言

cocos2dx-lua 建立滑鼠監聽

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