书:cocos2d 游戏开发 节选

来源:互联网 发布:优化设计方案 编辑:程序博客网 时间:2024/06/13 12:04


cocos2d 游戏开发 节选



所有节点的基类都是 CCNode,它包含一个位置属性,但没有视觉上的显示。它是其他所有节点类的父类,包括最基本的CCScene类和CCLayer类。

CCScene 类是一个抽象概念,它仅用于根据对象的像素坐标把对象放置到场景中正确的位置。所以,CCScene 节点通常是整个cocos2d场景体系的根节点。多数时候只有一个运行着的场景,不过从一个场景过渡到另一个场景的情况是例外。

CCLayer 类本身几乎没有什么功能,但它可用于接收触摸和加速计输入。它常被用作CCScene的第一个子节点,因为每个游戏至少都会使用触摸输入的功能 


每一次 cocos2d进入下一帧,那些不再使用的自动释放对象将被自动地释放。但这样做也有一个缺点:如果使用上述代码,然后在下一帧或者以后想要访问myNode 对象时,你就会发现它已经不在内存中了。如果这时发送消息给它,将导致程序出现 EXC_BAD_ACCESS错误而崩溃。

简单地把 CCNode* myNode变量当作类成员变量并不意味着对象使用的内存会被自动保留下来。如果想在下一帧或者以后的帧中访问自动释放对象,就必须保留它。并且,如果没有显式地将其添加为子节点,那么之后还是需要对其进行手动释放。

有一种可以更好地使用自动释放对象的方法,并且不需要显式地调用 retain方法——可以将生成的CCNode对象作为子节点添加到另一个派生自CCNode 的对象中,甚至可以删除成员变量而直接依赖cocos2d来保存对象: 


原创粉丝点击