关于Cocos2d-x中监听物体不超越边界的解决方案
写一个监听器
touchlistener->onTouchMoved = [this](Touch* pTouch, Event*) {
auto delta = pTouch->getDelta();
auto hero = (PlaneHero*)getChildByTag(HERO_TAG);
auto oldpos = hero->getPosition(); //用来重置出界后的位置
hero->setPosition(Vec2(hero->getPosition().x + delta.x, hero->getPosition().y + delta.y));
//不能出界
auto winSize = Director::getInstance()->getWinSize();
if (hero->getPositionY() < hero->getContentSize().height / 2 || hero->getPositionY() > winSize.height - hero->getContentSize().height / 2
|| hero->getPositionX() < hero->getContentSize().width / 2 || hero->getPositionX() > winSize.width - hero->getContentSize().width / 2)
{
hero->setPosition(oldpos);
}
};
_eventDispatcher->addEventListenerWithSceneGraphPriority(touchlistener, this); //把监听器添加到事件分发器
相关文章
- 关于ruby gem无法连接到rubygems.org的解决方案
- 关于人脸识别最近浏览器打不开摄像头的解决方案
- Hybrid App技术批量制作APP应用与跨平台解决方案
- memcached缓存批量更新解决方案探讨
- 【问题解决方案】查看Python安装了哪些库(pandas, matplotlib等等)
- 数据库进程间通信解决方案
- 关于Mysql表InnoDB下插入速度慢的解决方案
- ftp如何预览图片 解决方案
- 【问题解决方案】关于Python中的语句 ' %matplotlib inline '
- HttpWebRequest下载文件,乱码问题解决方案
- SAP Server Side JavaScript解决方案
- Atitit 减少财政支出之减少通讯支出 解决方案attilax总结
- atitit.身份认证解决方案attilax总结
- Atitit.js this错误指向window的解决方案
- Android 9.0 锁屏界面滑动解锁不灵的解决方案
- C# 关于用7zip压缩文件提示win32exception 系统找不到文件解决方案(win7 x64)
- 关于内层DIV设置margin-top不起作用的解决方案
- java.io.FileNotFoundException关于使用Intellij Idea时系统找不到指定文件的解决方案、mysql8.0数据源连接配置
- 关于 protobuf 在网络传输中数据丢失问题解决方案
- HTMLTestRunner生成报告中有中文乱码解决方案
- linux安装php出现的各种错误解决方案
- Windows11安装Anaconda遇到的一些bug的【解决方案】
- C++搭建集群聊天室(十一):客户端 || 服务器 异常退出解决方案