首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对我的精灵使用CCLayer或CCSprite类?

对我的精灵使用CCLayer或CCSprite类?
EN

Stack Overflow用户
提问于 2012-08-01 22:31:42
回答 1查看 713关注 0票数 0

我有一些精灵,我不知道从哪个类中子类化。我现在使用CCLayer来做这件事,因为我可以将我必须添加到sprite中的所有孩子都放在它的类中,但是所有重叠的层都会检测到触摸事件,这可能不是那么聪明。因此,在外行术语中,我希望有一个火焰喷射器,例如,当我触摸它时,我必须添加一个火焰。我只需在FlameThrower.h类中添加火焰(它是CCLayer的子类。如果我是CCSprite的子类,我将不得不在父类中添加火焰,这也是无效的,对吗?那么,这里的正确方法是什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-03 03:18:08

您可能根本不需要对CCSprite或CCLayer进行子类化。

这是一个基本的Cocos2d游戏架构问题,我希望大家能更多地讨论它。

对于我创建的游戏,我使用NSObject或CCNode作为创建角色的基类。

这些角色控制器类为角色的AI运行逻辑,如果角色具有物理属性,则拥有角色的物理实体,并控制表示角色的一个或多个精灵。

如果角色控制器不需要CCNode提供的属性或功能,则I子类NSObject,这通常是基于物理的角色的情况。

用户输入通常由HUD拥有,但有时您可能希望将其直接添加到游戏世界中的特定角色。在这种情况下,您可能希望子类化CCLayer以添加触摸和加速度计,或者子类化CCNode并注册到触摸调度器。

通常,我在单独的类中为角色创建精灵,然后由character控制器创建和拥有。

我创建的游戏通常有一到四个精灵工作表,我有一个GameManager类将它们作为CCSpriteBatchNodes加载到CCSpriteFrameCache中,然后当通过世界建筑脚本引擎创建角色时,我将对所需CCSpriteBatchNode的引用传递给该角色,以便它可以使用批处理节点向其添加角色精灵。

然后,角色向GameManager或父母角色注册,以进行更新、管理,并最终销毁和清除。

对于基于物理的角色,通常甚至不需要子类CCNode (更不用说CCLayer或CCSprite),除非您希望物理主体直接控制节点的行为,而不是控制节点或NSObject拥有的精灵。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11761510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档