2016-10-15 11 views
2

私はいくつかのココスレイアウトを持っています。これらはさまざまなパネルまたはメニューです。私はほとんどのアプリのように、自分のエリアの外にあるタッチ入力でどのように閉じてしまうのだろうと思っていました。Cocos:エリア/レイアウト内のタッチ入力を検出する方法

画面上の空白部分をタップすると、基本的にポップアップメニューを閉じることができます。

答えて

0

基本的には、画面の端とポップアップの間のスペースを計算してから、デストラクタを呼び出します。

は、これは私がそれを行う方法です:初期化で

タッチ

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; 
} 
+1

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

ありがとうございました! :) 本当に感謝。 – Dakiaiu

関連する問題