在 cocos2d-2.1rc0-x-2.1.3\cocos2dx\cocoa\CCGeometry.cpp中
bool CCPoint::equals(const CCPoint& target) const
{
return (fabs(this->x - target.x) < FLT_EPSILON)
&& (fabs(this->y - target.y) < FLT_EPSILON);
}
昨天在学Cocos2d-x by Example Beginner's Guide,第3章时
在GameSprite.ccp中
void GameSprite::setPosition(const CCPoint& pos) {
CCSprite::setPosition(pos);
//_nextPosition = _nextPosition == pos ? _nextPosition : pos ;
if (!_nextPosition.equals(pos)) {
_nextPosition = pos;
}
}
觉得equals不如用“==”,来得直观。于是决定重载“==”,调用原有的CCPoint::equals,非常简单。
bool CCPoint::operator==(const CCPoint& target) const {
return CCPoint::equals(target);
}
重载以后,CCPoint::setPosition()就可以写成这样:
void GameSprite::setPosition(const CCPoint& pos) {
CCSprite::setPosition(pos);
_nextPosition = _nextPosition == pos ? _nextPosition : pos ;
/*
if (!_nextPosition.equals(pos)) {
_nextPosition = pos;
}
*/
}
可是这样一来,问题就有了。“==”还有个用,就是比较引用的是不是自身(this==self),这就违背了我们的初衷。就不是比较是不是在平面中的同一个点了。
那么,还需要重载“==” 吗?