cocos2d 学习笔记 2

CCSpriteBatchNode的作用很像CCLayer,因为它本身并不显示在屏幕上。

不过 你只能把CCSprite加入CCSpriteBatchNode。

CCSpriteBatchNode 将一个图片文件名作为参数,使用这个参数的原因是所有被添加进 CCSpriteBatchNode的CCSprite节点都必须使用同一个图片文件。如果你没有在

CCSprite中使用相同的图片,你将会在调试窗口中得到以下报错信息:

SpriteBatches[13879:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'CCSprite is not using the same texture id'

 

一个通常会犯的致命错误 Sprite01项目展示了一个新的Objective-C开发者通常会犯的错误。你很容易犯 这个错误,但是又很难找到它。请查看一下列表6-2中的代码,你能看到哪里出 错了吗?

列表6-2.一个通常在继承CCSprite(或者其它类)时会犯的致命错误

‐(id) init {

if ((self = [super initWithFile:@"ship.png"]))

{
}
return self;

[self scheduleUpdate];

} 

 

上述代码的问题是:-(id)init这个方法是默认的初始化方法,它最终会被任何 特殊的初始化方法(比如initWithFile)所调用。因为上述代码又调用了

 

[super initWithFile:..]这个特殊的初始化方法,最终产生了一个死循环。 解决的方法很简单。你只要像列表6-3所示那样把初始化方法换一个名字(只要

不是-(id)init)就可以了。

 

原文地址:https://www.cnblogs.com/gaoxiao228/p/2466335.html