CGPoint与整数的等价?

时间:2010-04-10 10:40:54

标签: iphone c objective-c core-graphics

干杯,

我喜欢在C中严格键入。因此,如果我特别需要整数,我不想存储浮点数的二维向量。是否有Apple提供的等效CGPoint将数据存储为整数?

我已经实现了我的类型Vector2i及其伴随函数Vector2iMake()àCGPoint,但我内心深处的一些东西尖叫说Apple已经在那里。


更新解释。

我需要一种能够在棋盘游戏中存储坐标的数据类型。这些绝对是整数。如果我要实现基于图块的回合制策略或基于图块的RPG,也是如此。

4 个答案:

答案 0 :(得分:7)

(直接回答问题......)

我不知道“NSIntegerPoint”,但制作一个并不困难:

struct NSIntegerPoint {
   NSInteger x;
   NSInteger y;
};

与以下内容一样:

CG_INLINE NSIntegerPoint
NSIntegerPointMake(NSInteger x, NSInteger y)
{
  NSIntegerPoint p; p.x = x; p.y = y; return p;
}

CG_INLINE bool
__NSIntegerPointEqualToPoint(NSIntegerPoint point1, NSIntegerPoint point2)
{
  return point1.x == point2.x && point1.y == point2.y;
}
#define NSIntegerPointEqualToPoint __NSIntegerPointEqualToPoint

答案 1 :(得分:6)

如果您碰巧将游戏板表示为存储在非稀疏嵌套数组中的对象,那么您可能需要考虑子类化NSIndexPath或直接使用它。

从课程参考:

  

NSIndexPath类表示嵌套数组集合树中特定节点的路径。此路径称为索引路径。

     

索引路径中的每个索引都表示从树中的一个节点到另一个更深的节点的子节点数组的索引。

答案 2 :(得分:3)

根据iPhone应用程序编程指南,所有提供的点都是基于浮点数的。当你使用它们来处理屏幕(最终期望整数)时,你应该使用浮动来独立于屏幕分辨率等。

答案 3 :(得分:0)