选择精灵触摸更好的方法



从我的objective c和cocos2d编码开始,我一直在使用顺序搜索方法来选择精灵。每次我检测到触摸时,我都会从数组列表中搜索每个对象,然后确定触摸是否在精灵区域上,如果我得到对象,那么我就选择那个精灵。这是我知道的方法。

该方法的问题是,如果对象列表变得巨大,那么它可能需要时间,即使我们正在处理一个数组,它也会锁定数组,我们不能对该数组做任何事情。

除了这个,还有人知道更好的方法吗?

您可以使用CCMenuItemImage代替CCSprite。你可以选择一个选择器,一旦项目被触摸,当然可以应用一个像常规精灵一样的图像,使用以下方法:

itemFromNormalImage:selectedImage:target:selector:

你还必须创建一个菜单来包含这些菜单项,否则触摸它们将不起作用。只需创建一个CCMenu的实例,并将项目添加到该菜单,然后将菜单添加到您的图层。

关于效率,你必须对这两种实现进行一些基准测试,因为这个实现更方便,但不一定更快

锁定数组?然后为object再使用一个指针。

 NSArray *array = [NSArray arrayWithArray:mSpriteArray];
    for(CCSprite *sprite in array)
    {
        if(CGRectContainsPoint([sprite boundingBox], touchPoint))
        {
          //touched...
        }
    }

最新更新