iphone-common-codes-ccteam源代码 CCPoint.m

本文详细介绍了CCPoint类的实现方式,包括初始化方法、属性获取与设置、比较操作等,并提供了与其他类如CGPoint的互操作性示例。
//
//  CCPoint.m
//  CCFC
//
//  Created by xichen on 11-12-17.
//  Copyright 2011年 ccteam. All rights reserved.
//


#import "CCPoint.h"
#import "CCCommon.h"
#import "CCNSNumber.h"


@implementation CCPoint




- (id)initWithX:(CGFloat)aX withY:(CGFloat)aY
{
        COMMON_INIT_BEGIN
        
        x = aX;
        y = aY;
        
        COMMON_INIT_END
}


+ (id)pointWithX:(CGFloat)aX withY:(CGFloat)aY
{
        CCPoint *p = [[CCPoint alloc] initWithX:aX withY:aY];
        if(p == nil)
                return nil;
        
        return [p autorelease];
}


- (id)initWithCGPoint:(CGPoint)point
{
        COMMON_INIT_BEGIN
        
        x = point.x;
        y = point.y;
        
        COMMON_INIT_END
}


+ (id)pointWithCGPoint:(CGPoint)point
{
        CCPoint *p = [[CCPoint alloc] initWithCGPoint:point];
        if(p == nil)
                return nil;


        return [p autorelease];
}


- (void)dealloc
{
        [super dealloc];
}




- (BOOL)isEqualTo:(CCPoint *)anotherPoint
{
        return (FLOAT_EQUAL_TO_FLOAT(x, anotherPoint->x)
                 && FLOAT_EQUAL_TO_FLOAT(y, anotherPoint->y));
}


- (BOOL)isEqualToCGPoint:(CGPoint)point
{
        return (FLOAT_EQUAL_TO_FLOAT(x, point.x)
                 && FLOAT_EQUAL_TO_FLOAT(y, point.y));
}


- (BOOL)isZero
{
        return (FLOAT_EQUAL_TO_ZERO(x) && FLOAT_EQUAL_TO_ZERO(y)); 
}




- (void)setX:(CGFloat)newX withY:(CGFloat)newY
{
        x = newX;
        y = newY;
}


- (BOOL)isInRect:(CGRect)rect
{
        CGFloat rectX = rect.origin.x;
        CGFloat rectY = rect.origin.y;
        CGFloat rectWidth = rect.size.width;
        CGFloat rectHeight = rect.size.height;
        
        if(x < rectX 
       ||(x > rectX + rectWidth)
       || y < rectY
       || y > rectY + rectHeight)
        {
                return FALSE;
        }
        
        return TRUE;
}


//判断某个点是否在某个区域里
+ (BOOL)isInRect:(CGPoint)p rect:(CGRect)rect
{
        CGFloat rectX = rect.origin.x;
        CGFloat rectY = rect.origin.y;
        CGFloat rectWidth = rect.size.width;
        CGFloat rectHeight = rect.size.height;
        
        CGFloat pX = p.x;
        CGFloat pY = p.y;
        
        if(pX < rectX 
       ||(pX > rectX + rectWidth)
       || pY < rectY
       || pY > rectY + rectHeight)
        {
                return FALSE;
        }
        
        return TRUE;
}


- (CGPoint)toCGPoint
{
        return CGPointMake(x, y);
}


// get the distance of two CCPoint
- (CGFloat)distanceToCCPoint:(CCPoint *)anotherPoint
{
        return sqrt((x - anotherPoint->x) * (x - anotherPoint->x)
                                + (y - anotherPoint->y) * (y - anotherPoint->y));
}


@end


可能有更新:

googlecode链接地址:http://code.google.com/p/iphone-common-codes-ccteam/source/browse/trunk/CCFC/files/CCPoint.m

github地址: https://github.com/cxsjabc/iphone-common-codes-ccteam/tree/master/CCFC/files/CCPoint.m


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值