bool MyTouchEvent1::init() { if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); Sprite * sp1 = Sprite::create("HelloWorld.png"); sp1->setPosition(Point(visibleSize.width/2,visibleSize.height/2)); this->addChild(sp1); Sprite * sp2 = Sprite::create("node.png"); sp2->setPosition(Point(visibleSize.width / 2,visibleSize.height / 2)); this->addChild(sp2); //创建单机屏幕的监听器 auto listener = EventListenerTouchOneByOne::create(); //按下事件 listener->onTouchBegan = [](Touch *touch,Event * event) { //注册监听事件时绑定一个node对象,取出这个node对象 auto target = static_cast<Sprite*>(event->getCurrentTarget()); //坐标系转换 Point pos = Director::getInstance()->convertToGL(touch->getLocationInView()); //判断是不是点击到了精灵 if (target->getBoundingBox().containsPoint(pos)) { target->setOpacity(100); return true; } return false; }; //抬起事件 listener->onTouchEnded = [](Touch *touch,Event * event) { //恢复精灵的透明度 auto target = static_cast<Sprite*>(event->getCurrentTarget()); target->setOpacity(255); }; //设施点击的吞没事件(设置了以后,点击重叠部分 不会影响到下一层) listener->setSwallowTouches(true); //注册监听事件 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,sp1); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener->clone(),sp2); return true; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。