我正在开发像 Rodents Revenge 这样的游戏,只是为了指出我从哪里来的这个问题。我也在使用 cocos2d 游戏引擎...
我有一个包含大约 168 个块的层,这些块是 Sprite 的子类。每个块包含两个整数实例变量,一个用于 xGridLocation 和 yGridLocation。我有一个我调用的方法,它返回一个数组,其中包含与您控制的主角(鼠标)位于同一 x 或 y 行的所有块。只要块保持相同的顺序(从最小的 x/y 值到最大),这种方法就可以工作,但是当我开始将块推出其原始行并将它们混合一点(玩游戏时)我的逻辑不更长的工作,因为它基于这样一个事实,即数组中的块根据它们的 xGridLocation 或 yGridLocation 从最小到最大进行索引。xGridLocation 和 yGridLocation 不是基于它们的位置,
我的问题是如何在基于实例变量 xGridLocation 或 yGridLocation 的顺序返回之前对数组进行排序。我正在考虑使用 sortUsingSelector:@selector(compareValues:) 方法,但不确定如何实现将进行排序的 compareValues 方法。
这是我用来获取块数组的方法。
//I have another one for x. The y parameter is the mouses y value.
-(NSMutableArray *)getBlocksForY:(int)y
{
NSMutableArray *blocks = [[NSMutableArray alloc] init];
int tagNum = 0;
//tagNum starts at 0, and goes up to 168, the numer of children (blocks) on
//this layer...
for(tagNum; tagNum<=168; tagNum++)
{
BlueBlock *currentBlock = (BlueBlock *)[self getChildByTag:tagNum];
int currentY = [currentBlock getBlockLocationY];
//Checks to see if the current block has same y value as the mouse, if
//so it adds it to the array.
if(currentY == y)
{
[blocks addObject:currentBlock];
}
}
//I want to sort before returning...
return blocks;
}
如果您需要更多信息,请询问。