1

这个想法是用宏设置几个固定的 CGPoint 值,并在代码中灵活地读取它们(随机或使用提供的整数值)

我有一个定义几个 CGPoints 值的头文件,如下所示:

#define kSpawnPoint1 {550,20}
#define kSpawnPoint2 {550,80}
#define kSpawnPoint3 {200,175}

我在代码中生成一个介于 1 到 3 之间的随机整数,并计划根据整数值读取宏中的 CGPoint 值。但不知道该怎么做。在学习了有关预处理器的其他教程之后,我编写了如下代码。

#define kSpawnPoint1 {550,20}
#define kSpawnPoint2 {550,80}
#define kSpawnPoint3 {200,175}
#define kSpawnPoint(x) kSpawnPoint##x

在 m 文件中:

int tempInt = 1;
CGPoint tempSpawnPoint = kSpawnPoint(temInt);

但是它不起作用。(警告:未声明的标识符'kSpawnPointspawnPoint')我怎样才能做到这一点?预先定义几个CGPoint是正确的方法吗?我认为我必须使用预处理器来实现这一点,考虑到未来的多屏幕分辨率支持也更容易在宏中实现,而且我的 kSpawnPoints 与不同的屏幕分辨率不同。

4

1 回答 1

1

宏只作用于文本,而不作用于变量的值。当你kSpawnPoint(an_int)kSpawnPointan_int. 因此,您必须输入一个文字数字作为参数才能得到您的观点之一:kSpawnPoint(1)-> kSpawnPoint1->{550, 20}

要在宏中随机选择,您必须将它们放入运行时存在的结构中,例如数组或switch语句。

于 2013-10-28T09:38:53.227 回答