修改button的可點擊區域

需求:在cocos2dx引擎中,button的點擊區域和button圖片的大小是同樣的,可是我須要修改可點擊區域的大小和位置,須要修改引擎源碼;函數

button提供的接口中並無和touch相關,button繼承至widge,在widget的接口中,找到hitTest(),ok,就是這個接口;ui

 1 bool Widget::hitTest(vec2 &pt) 
 2 {
 3     vec2 nsp = convertToNodeSpace(pt);
 4     Rect bb;
 5     bb.size = _contentSize;
 6     if (bb.containsPoint(nsp))
 7     {
 8        return true;
 9     }  
10 }

源碼很簡單,若是rect bb包含點擊的點,那麼就是hitTest成功。lua

考慮到引擎的穩定性,儘可能仍是不要對源碼作大的修改,個人思路是僅僅是在原來的結構上加一個rect,默認rect(0,0,0,0),當調用setClickArea()接口的時候用本身的rect進行判斷,不然仍是繼續使用源碼的判斷方式;spa

修改完源碼還要把接口倒到lua中使用,libLua庫已經很好的支持瞭如何把C++倒給lua,widget的接口在lua_cocos2dx_ui_auto.cppcode

1 int  lua_cocos2dx_ui_widget_setClickArea(lua_State * tolua_S)
2 {
3      cocos2d::ui::widget * obj = nullptr;
4      obj = (cocos2d::ui::widget *) tolua_tousertype(tolua_S, 1, 0);
5      cocos2d::Rect arg0;
6      luaval_to_rect(tolua_S, 2, &arg0);
7     obj->setClickArea(arg0);
8     return 0;     
9 }

註冊C++函數給lua的寫法,從lua狀態機中取第一個參數是對象,第二個參數是rect的值,尼瑪今天太累,不想繼續寫了。對象

相關文章
相關標籤/搜索