奇怪的nosense CCSpriteBatchNode异常

时间:2014-10-21 13:07:19

标签: ios cocos2d-iphone

在我的cocos2d游戏中有一些奇怪的事情我无法弄清楚这个问题。

我的游戏有一个非常简单的文件结构,1个介绍层,1个主菜单层,1个游戏层。

在我开发的过程中,我滑过了菜单层,以便游戏从介绍层跳转以节省时间。

现在我完成了游戏,我添加了主菜单,当从它调用游戏层时它会崩溃!! ??

如果我跳过主菜单层,它永远不会崩溃。

编辑:

重要的是,如果我删除了主菜单层,它就可以正常使用...主菜单不添加任何纹理图集,只有一个我在整个游戏中使用。

这是消息错误:

"CCSprite: Batched sprites should use the same texture as the batchnode"

来自这个游戏层代码:

_myitens = [CCSpriteBatchNode batchNodeWithFile:@"mytextureatlas.png";

有趣的是主菜单只有图层功能是有一个调用游戏图层的按钮(来自文件的图像而不是纹理图集)....

我很难看到如何解决这个问题

任何提示都有效,谢谢

2 个答案:

答案 0 :(得分:0)

一个更常见的原因,特别是如果问题取决于您首先加载的场景,则会在两个地图集中显示相同的图像时发生。

例如,假设您有mytextureatlas.plist和notmytextureatlas.plist,并且两者都包含具有相同名称的图像,请说“player.png”。如果你第一次加载mytextureatlas一切似乎都很好。但是,当您首先加载notmytextureatlas,然后尝试使用mytextureatlas将player.png精灵添加到批处理节点时,cocos2d实际上将使用来自notmytextureatlas的player.png,从而引发此错误。

仔细检查所有纹理图集中的所有图像名称是否唯一。

答案 1 :(得分:0)

如何向_myitems添加精灵?您正在添加使用不同纹理创建的子项,这是错误的含义以及发生的事情。

异常并非无意义,它意味着一个你无法遵守的精确条件:一个蝙蝠侠必须用与蝙蝠侠本身相同的纹理初始化孩子(这是有道理的,因为它曾用于批量GL调用。)

例如:

_myitems = [CCSpriteBatchNode batchNodeWithFile:@"mytextureatlas.png"];
[_myitems addChild:[CCSprite spriteWithTexture:@"othertexture.png"]];

会产生错误。你应该尝试:

[_myitems addChild:[CCSprite spriteWithTexture:_myitems.textureAtlas.texture]];