从我的目标 c 和 cocos2d 编码的乞求开始,我一直在使用顺序搜索方法来选择一个精灵。每次检测到触摸时,我都会从数组列表中搜索每个对象,然后确定触摸是否在精灵区域上,如果我得到对象,然后我选择那个精灵。这是我知道的方法。
该方法的问题在于,如果对象列表变得很大,则可能需要时间,即使我们正在使用一个数组,它也会锁定该数组,我们对该数组不做任何事情。
除了这个,还有人知道更好的方法吗?
从我的目标 c 和 cocos2d 编码的乞求开始,我一直在使用顺序搜索方法来选择一个精灵。每次检测到触摸时,我都会从数组列表中搜索每个对象,然后确定触摸是否在精灵区域上,如果我得到对象,然后我选择那个精灵。这是我知道的方法。
该方法的问题在于,如果对象列表变得很大,则可能需要时间,即使我们正在使用一个数组,它也会锁定该数组,我们对该数组不做任何事情。
除了这个,还有人知道更好的方法吗?
您可以使用CCMenuItemImage
而不是CCSprite
. 一旦项目被触摸,您就可以选择一个选择器,当然也可以使用以下方法应用像普通精灵一样的图像:
itemFromNormalImage:selectedImage:target:selector:
您还必须创建一个菜单来包含此菜单项,否则触摸它们将不起作用。只需创建一个实例CCMenu
并将项目添加到此菜单,然后将菜单添加到您的图层。
关于效率,你将不得不对这两种实现进行一些基准测试,因为这个更方便但不一定更快
锁数组?然后再为对象使用一个指针。
NSArray *array = [NSArray arrayWithArray:mSpriteArray];
for(CCSprite *sprite in array)
{
if(CGRectContainsPoint([sprite boundingBox], touchPoint))
{
//touched...
}
}