消格子时一个很深的bug的修复纪录

本文针对cocos2d-x2.2.2版本的JavaScript Binding中,频繁调用getValidRectangle方法导致的性能问题进行分析。通过记录节点宽度和高度避免重复计算,有效解决了触摸事件中因过度计算引发的错误。
环境: 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

转载于:https://www.cnblogs.com/JD85/p/3712489.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值