我有几个 cocoa 布局,它们是各种面板或菜单。我想知道如何像大多数应用程序一样在其区域之外通过触摸输入关闭。

基本上,如何通过点击屏幕上的任何空白区域来关闭弹出菜单。

最佳答案

基本上,您可以计算屏幕边缘和弹出窗口之间的间隔,然后调用析构函数。

,这是我的方法:

初始化

auto touchListener = cocos2d::EventListenerTouchOneByOne::create();
touchListener->setSwallowTouches(true);
touchListener->onTouchBegan = CC_CALLBACK_2(CLASS::onTouch, this);
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchListener, this);

触碰
bool CLASS::onTouch(cocos2d::Touch* touch, cocos2d::Event* event)
{
    int ySize = visibleSize.height - holder->getContentSize().height;
    int locationY = touch->getLocation().y;
    if((locationY > 0 && locationY < ySize/2) || (locationY > origin.y + ySize/2 + holder->getContentSize().height && locationY < visibleSize.height))
    {
        this->removeFromParentAndCleanup(true);
    }
    return true;
}

关于c++ - Cocos:如何检测区域/布局内的触摸输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40058234/

10-09 13:25