修改button的可点击区域
2024-08-31 04:14:28
需求:在cocos2dx引擎中,button的点击区域和button图片的大小是一样的,但是我需要修改可点击区域的大小和位置,需要修改引擎源码;
button提供的接口中并没有和touch相关,button继承至widge,在widget的接口中,找到hitTest(),ok,就是这个接口;
bool Widget::hitTest(vec2 &pt)
{
vec2 nsp = convertToNodeSpace(pt);
Rect bb;
bb.size = _contentSize;
if (bb.containsPoint(nsp))
{
return true;
}
}
源码很简单,如果rect bb包含点击的点,那么就是hitTest成功。
考虑到引擎的稳定性,尽量还是不要对源码做大的修改,我的思路是仅仅是在原来的结构上加一个rect,默认rect(0,0,0,0),当调用setClickArea()接口的时候用自己的rect进行判断,否则还是继续使用源码的判断方式;
修改完源码还要把接口倒到lua中使用,libLua库已经很好的支持了如何把C++倒给lua,widget的接口在lua_cocos2dx_ui_auto.cpp
int lua_cocos2dx_ui_widget_setClickArea(lua_State * tolua_S)
{
cocos2d::ui::widget * obj = nullptr;
obj = (cocos2d::ui::widget *) tolua_tousertype(tolua_S, , );
cocos2d::Rect arg0;
luaval_to_rect(tolua_S, , &arg0);
obj->setClickArea(arg0);
return ;
}
注册C++函数给lua的写法,从lua状态机中取第一个参数是对象,第二个参数是rect的值,尼玛今天太累,不想继续写了。
最新文章
- Eclipse 安装 SVN 的在线插件
- 【leetcode】Pascal's Triangle
- cdh完美集成kafka
- 面试题:“你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?”
- Java: Class Variable/Static Variable
- datagridview的某些属性以及增删改查
- linux时间无法同步的解决方案
- Android编译过程详解(二)
- 关于Velocity加减法等四则运算的迷思
- JAVA修饰符类型(转帖)
- 【转】 IntelliJ IDEA像Eclipse一样打开多个项目
- UOJ #311「UNR #2」积劳成疾
- Divide the Sequence (贪心)
- 浅谈压缩感知(二十):OMP与压缩感知
- 彻底理解js中的闭包
- 优云软件又双叒通过CMMI ML3评估 , 研发和质量管理水平创新高
- js调试系列: 调试基础与技巧
- oracle归档日志的操作
- 如果BarTender出现卸载不干净的问题如何处理
- [linux] reboot和shutdown-r的区别