Hi,
I have a bunch of touchable sprites that I want to disable them from responding to touch events during an animation.
class PotSprite : public Sprite {
protected:
explicit PotSprite (int priority)
: _eventListener (nullptr)
, _fixedPriority (priority) { }
public:
enum ChildTag {
kCover = 1
};
static PotSprite* create (const std::string& filename, int priority = 0);
virtual bool initWithFile (const std::string& filename) override;
void onEnter () override;
void onExit () override;
EventListener* getEventListener () const { return _eventListener; };
float radius () const {
return this->getContentSize().width * 0.5f;
}
private:
EventListener* _eventListener;
int _fixedPriority;
};
void PotSprite::onEnter () {
Sprite::onEnter();
auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouches( true );
listener->onTouchBegan = [this] (Touch* touch, Event* event) {
};
listener->onTouchMoved = [] (Touch* touch, Event* event) {
};
listener->onTouchEnded = [this] (Touch* touch, Event* event) {
};
_eventListener = listener;
if (_fixedPriority != 0)
_eventDispatcher->addEventListenerWithFixedPriority( _eventListener, _fixedPriority );
else
_eventDispatcher->addEventListenerWithSceneGraphPriority( _eventListener, this );
}
I’ve tried to call, hoping that it will disable dispatching globally but no luck:
Director::getInstance()->getEventDispatcher()->setEnabled( false )
Following didn’t worked as well:
auto nodes = this->getChildren();
for (auto n : nodes) {
auto pot = static_cast<PotSprite*>( n );
auto listener = pot->getEventListener();
listener->setEnabled( false );
}
Regards,
Mike.