MenuItem* Menu::getItemForTouch(Touch *touch) { Vector2 touchLocation = touch->getLocation(); if (!_children.empty()) { for (auto iter = _children.crbegin(); iter != _children.crend(); ++iter) { MenuItem* child = dynamic_cast<MenuItem*>(*iter); if (child && child->isVisible() && child->isEnabled()) { Vector2 local = child->convertToNodeSpace(touchLocation); Rect r = child->rect(); r.origin = Vector2::ZERO; if (r.containsPoint(local)) { return child; } } } } return nullptr; }