需求:在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的值,尼玛今天太累,不想继续写了。

最新文章

  1. Eclipse 安装 SVN 的在线插件
  2. 【leetcode】Pascal's Triangle
  3. cdh完美集成kafka
  4. 面试题:“你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?”
  5. Java: Class Variable/Static Variable
  6. datagridview的某些属性以及增删改查
  7. linux时间无法同步的解决方案
  8. Android编译过程详解(二)
  9. 关于Velocity加减法等四则运算的迷思
  10. JAVA修饰符类型(转帖)
  11. 【转】 IntelliJ IDEA像Eclipse一样打开多个项目
  12. UOJ #311「UNR #2」积劳成疾
  13. Divide the Sequence (贪心)
  14. 浅谈压缩感知(二十):OMP与压缩感知
  15. 彻底理解js中的闭包
  16. 优云软件又双叒通过CMMI ML3评估 , 研发和质量管理水平创新高
  17. js调试系列: 调试基础与技巧
  18. oracle归档日志的操作
  19. 如果BarTender出现卸载不干净的问题如何处理
  20. [linux] reboot和shutdown-r的区别

热门文章

  1. VS2017编译boost库
  2. centos6.5环境搭建openvp服务器及windows客户端搭建及配置详解
  3. 转载:2.2.1 块配置项《深入理解Nginx》(陶辉)
  4. tsconfig.json配置
  5. jquery----js/css 导入
  6. python接口自动化测试二十三:文件上传
  7. Java字符串的操作
  8. python 全栈开发,Day105(路飞其他数据库表结构,立即结算需求)
  9. HDFS上创建文件、写入内容
  10. F 多重背包 判断能否刚好装满