0

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

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

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

4

2 回答 2

2

您可以使用CCMenuItemImage而不是CCSprite. 一旦项目被触摸,您就可以选择一个选择器,当然也可以使用以下方法应用像普通精灵一样的图像:

itemFromNormalImage:selectedImage:target:selector:

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

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

于 2013-04-04T07:29:23.140 回答
0

锁数组?然后再为对象使用一个指针。

 NSArray *array = [NSArray arrayWithArray:mSpriteArray];

    for(CCSprite *sprite in array)
    {
        if(CGRectContainsPoint([sprite boundingBox], touchPoint))
        {
          //touched...
        }
    }
于 2013-04-04T05:14:35.447 回答