消格子时一个很深的bug的修复纪录
环境: cocos2d-x 2.2.2 jsb
条件:当快速在格子中来回拖拽选取时,会一直在计算指尖和格子的真实区域是否碰撞,
报错:touchMOve时由于不停的调用BOxItem的getValidRectangle方法,
即不停的在此方法内执行 node.getContentSize().witdh,
经过好几个小时的检测,发现问题就在这一行,xcode里报错的提示显示的是框架里的touchMove相关的代码,看不出具体问题,大概知道了是在touchMOve时F出的问题
修复办法:在BoxItem里创建如下两个变量,用来纪录m_icon的宽和高,这样touch时就避免了重复访问node的getContentSize().width /.height,
m_iconRealWidth:0,
m_iconRealHeight:0,
这样就不会再报错了。
总结:项目中对于显示对象的大小使用,尽量用变量来缓存,而不是每次都调用node.getContentSize().width