我正在制作一个简单的opengl引擎,我需要能够为包含动画帧的每个类存储一系列整数。特定于类的数组
例如:我创建了Dog类。狗有3个动画,由多个帧索引组成,代表帧在纹理图集中的位置。在类文件我想定义这些动画是这样的:
const int animations[3] = {
{1,2,3}, //walk
{4,5,6}, //jump
{1,7,8,9,10,11} //take a wiz
}
@implementation...
这是OFC不正确的OBJ-C,但有没有办法做同样的事情? Dog的每个实例都具有相同的动画,所以我不想通过将动画存储在实例变量中来浪费内存。如果可能的话,我想避免使用NSArray。
有没有办法在类级别存储这样的二维,可变长整型数组?
这样做了!但现在,我想知道每个动画的长度。做sizeof动画[0]只是返回8,我想指针地址是8位长?如果我做sizeof行我得到24.有没有办法获得指针指向数组的大小,而不是指针本身? – oskob 2011-03-11 23:22:35
不是。C中的一个数组不知道它的长度;你必须跟踪你自己。一种方法(如答案中所建议的)是在最后使用“哨兵”值,例如-1(假定-1不是有效的帧索引)。或者,你将数组包装在某种记录长度的对象中(在重新发明'NSArray'的方式上,你应该使用:-))。 – 2011-03-12 00:11:09
是的,我强调这一点,只是说NSArray的语法很脏。 [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:0],[NSNumber numberWithInt:1],[NSNumber numberWithInt:2],nil]。 vs int arr [3] = {0,1,2} 是一个交易断路器:/ sentinel值thingie似乎是一个足够好的解决方案tohugh,谢谢! – oskob 2011-03-12 09:34:53