场景在cocos2d-x引擎中对应CCScene类。CCScene是游戏的表现舞台,所有布景、人物角色、菜单等都存放在场景里,作为一个整体,一起渲染,一起销毁,一起被切换。
CCScene类继承自CCNode类(CCNode继承自CCObject),它本身的方法有用的仅一个,即:
static CCScene *create(void); /** 创建一个CCScene对象*/
因为在cocos2d-x引擎中,CCScene主要承担的是一个容器的功能。游戏开发时把需要渲染的多个对象放到CCScene中统一管理。
在实际应用中,需要使用到CCScene的基类CCNode的许多方法,因此将CCNode类的主要方法解释如下:
virtual bool isVisible(); /** 是否可见*/
virtual void setVisible(bool visible); /** 设置是否可见*/
bool isRunning(); /** 节点是否允许*/
bool isIgnoreAnchorPointForPosition(); // 如果为真,则节点锚点坐标为(0,0)
void ignoreAnchorPointForPosition(bool isIgnoreAnchorPointForPosition); /** 设置是否忽略锚点坐标*/
static CCNode * create(void); /** 创建一个CCNode对象,有自动释放对象功能*/
virtual void onEnter(); /** 节点进入舞台(stage)时的回调函数*/
virtual void onEnterTransitionDidFinish(); /** 节点计入舞台后的回调函数*/
virtual void onExit(); /** 节点离开舞台后的回调函数*/
virtual void onExitTransitionDidStart(); /** 节点离开舞台时的回调函数*/
virtual void registerScriptHandler(int nHandler); /** 注册onEnter、onExit的脚本处理函数,onEnter运行后脚本处理函数自动取消注册*/
virtual void unregisterScriptHandler(void); /** 取消注册脚本处理函数*/
virtual void addChild(CCNode * child); /** 增加子节点,z坐标为0。如果子节点附加到一个运行中的节点,那么onEnter和onEnterTransitionDidFinish函数将立即被调用*/
virtual void addChild(CCNode * child, int zOrder); /** 增加子节点,z坐标为zOrder。如附加到一个运行中节点,同上*/
virtual void addChild(CCNode * child, int zOrder, int tag); /** 增加子节点,z坐标为zOrder,tag为标志。如附加到运行中节点,同上。*/
void removeFromParentAndCleanup(bool cleanup); /** 从父节点中删除自己,若参数cleanup为真,同时删除所有动作和回调函数。若本节点无父节点,则不执行操作*/
virtual void removeChild(CCNode* child, bool cleanup); /** 删除子节点。根据参数cleanup删除运行中的动作*/
void removeChildByTag(int tag, bool cleanup); /** 通过tag值删除子节点,根据参数cleanup删除动作*/
virtual void removeAllChildrenWithCleanup(bool cleanup); /** 删除所有子节点,根据参数cleanup删除动作*/
CCNode * getChildByTag(int tag); /** */根据tag值获取子节点,返回值是CCNode型
virtual void reorderChild(CCNode * child, int zOrder); /** 根据参数zOrder对子节点重排序,子节点必须已经被附加至本节点*/
virtual void sortAllChildren(); /** 在被绘制前对子节点进行排序,而不是在每次增减子节点时排序。除非子节点在同一帧内附加后被删除,不然不要手动调用此方法*/
virtual void cleanup(void); /** 停止所有运行的动作和定时器*/
virtual void draw(void); /** 可重载此函数来绘制节点*/
virtual void visit(void); /** 递归访问子节点并绘制它们*/
CCAction* runAction(CCAction* action); /** 运行指定的动作*/
void stopAllActions(void); /** 从运行动作列表中删除所有动作,即停止所有动作*/
void stopAction(CCAction* action); /** 停止指定的动作*/
void stopActionByTag(int tag); /** 停止参数tag指定的动作*/
CCAction* getActionByTag(int tag); /** 获取参数tag指定的动作*/
unsigned int numberOfRunningActions(void); /** 运行动作的数目,为运行中的动作数加上定时器计划将运行的动作数。组合动作如序列动作将被当成一个动作计算。*/
bool isScheduled(SEL_SCHEDULE selector); /** 检测参数selector指定的选择器是否被计划定时*/
void scheduleUpdate(void); /** 定时调度update方法,其序列号为0。定时后,每帧将调用一次update方法。序列号越小的定时器越先调度。每个节点只能定时一个update方法。*/
void scheduleUpdateWithPriority(int priority); /** 定时调度update选择器,自定义优先级。每帧将调用一次update选择器。优先级越小越先调度。每个节点只能定时一个update选择器。*/
void unscheduleUpdate(void); /** 取消定时update*/
void schedule(SEL_SCHEDULE selector); /** 定时一个选择器,每帧调用一次*/
void schedule(SEL_SCHEDULE selector, float interval); /** 定时一个自定义选择器,参数interval为时间间隔,单位为秒。若interval为0,则每帧调用一次(此时推荐使用scheduleUpdate方法)。若选择器已被定时,则仅更新时间间隔,而不重复定时。*/
void schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay); /** 重复执行动作repeat+1次,不断重复则设置repeat为kCCRepeatForever。参数delay指定动作执行前延迟的时间*/
void scheduleOnce(SEL_SCHEDULE selector, float delay); /** 定时一个仅运行一次的选择器*/
void unschedule(SEL_SCHEDULE selector); /** 取消定时一个选择器*/
void unscheduleAllSelectors(void); /** 取消所有定时器,包括update选择器。动作不受影响*/
void resumeSchedulerAndActions(void); /** 恢复所有定时器和动作,被onEnter内部调用*/
void pauseSchedulerAndActions(void); /** 暂停所有定时器和动作,被onExit内部调用*/
CCScene类继承自CCNode类(CCNode继承自CCObject),它本身的方法有用的仅一个,即:
static CCScene *create(void); /** 创建一个CCScene对象*/
因为在cocos2d-x引擎中,CCScene主要承担的是一个容器的功能。游戏开发时把需要渲染的多个对象放到CCScene中统一管理。
在实际应用中,需要使用到CCScene的基类CCNode的许多方法,因此将CCNode类的主要方法解释如下:
virtual bool isVisible(); /** 是否可见*/
virtual void setVisible(bool visible); /** 设置是否可见*/
bool isRunning(); /** 节点是否允许*/
bool isIgnoreAnchorPointForPosition(); // 如果为真,则节点锚点坐标为(0,0)
void ignoreAnchorPointForPosition(bool isIgnoreAnchorPointForPosition); /** 设置是否忽略锚点坐标*/
static CCNode * create(void); /** 创建一个CCNode对象,有自动释放对象功能*/
virtual void onEnter(); /** 节点进入舞台(stage)时的回调函数*/
virtual void onEnterTransitionDidFinish(); /** 节点计入舞台后的回调函数*/
virtual void onExit(); /** 节点离开舞台后的回调函数*/
virtual void onExitTransitionDidStart(); /** 节点离开舞台时的回调函数*/
virtual void registerScriptHandler(int nHandler); /** 注册onEnter、onExit的脚本处理函数,onEnter运行后脚本处理函数自动取消注册*/
virtual void unregisterScriptHandler(void); /** 取消注册脚本处理函数*/
virtual void addChild(CCNode * child); /** 增加子节点,z坐标为0。如果子节点附加到一个运行中的节点,那么onEnter和onEnterTransitionDidFinish函数将立即被调用*/
virtual void addChild(CCNode * child, int zOrder); /** 增加子节点,z坐标为zOrder。如附加到一个运行中节点,同上*/
virtual void addChild(CCNode * child, int zOrder, int tag); /** 增加子节点,z坐标为zOrder,tag为标志。如附加到运行中节点,同上。*/
void removeFromParentAndCleanup(bool cleanup); /** 从父节点中删除自己,若参数cleanup为真,同时删除所有动作和回调函数。若本节点无父节点,则不执行操作*/
virtual void removeChild(CCNode* child, bool cleanup); /** 删除子节点。根据参数cleanup删除运行中的动作*/
void removeChildByTag(int tag, bool cleanup); /** 通过tag值删除子节点,根据参数cleanup删除动作*/
virtual void removeAllChildrenWithCleanup(bool cleanup); /** 删除所有子节点,根据参数cleanup删除动作*/
CCNode * getChildByTag(int tag); /** */根据tag值获取子节点,返回值是CCNode型
virtual void reorderChild(CCNode * child, int zOrder); /** 根据参数zOrder对子节点重排序,子节点必须已经被附加至本节点*/
virtual void sortAllChildren(); /** 在被绘制前对子节点进行排序,而不是在每次增减子节点时排序。除非子节点在同一帧内附加后被删除,不然不要手动调用此方法*/
virtual void cleanup(void); /** 停止所有运行的动作和定时器*/
virtual void draw(void); /** 可重载此函数来绘制节点*/
virtual void visit(void); /** 递归访问子节点并绘制它们*/
CCAction* runAction(CCAction* action); /** 运行指定的动作*/
void stopAllActions(void); /** 从运行动作列表中删除所有动作,即停止所有动作*/
void stopAction(CCAction* action); /** 停止指定的动作*/
void stopActionByTag(int tag); /** 停止参数tag指定的动作*/
CCAction* getActionByTag(int tag); /** 获取参数tag指定的动作*/
unsigned int numberOfRunningActions(void); /** 运行动作的数目,为运行中的动作数加上定时器计划将运行的动作数。组合动作如序列动作将被当成一个动作计算。*/
bool isScheduled(SEL_SCHEDULE selector); /** 检测参数selector指定的选择器是否被计划定时*/
void scheduleUpdate(void); /** 定时调度update方法,其序列号为0。定时后,每帧将调用一次update方法。序列号越小的定时器越先调度。每个节点只能定时一个update方法。*/
void scheduleUpdateWithPriority(int priority); /** 定时调度update选择器,自定义优先级。每帧将调用一次update选择器。优先级越小越先调度。每个节点只能定时一个update选择器。*/
void unscheduleUpdate(void); /** 取消定时update*/
void schedule(SEL_SCHEDULE selector); /** 定时一个选择器,每帧调用一次*/
void schedule(SEL_SCHEDULE selector, float interval); /** 定时一个自定义选择器,参数interval为时间间隔,单位为秒。若interval为0,则每帧调用一次(此时推荐使用scheduleUpdate方法)。若选择器已被定时,则仅更新时间间隔,而不重复定时。*/
void schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay); /** 重复执行动作repeat+1次,不断重复则设置repeat为kCCRepeatForever。参数delay指定动作执行前延迟的时间*/
void scheduleOnce(SEL_SCHEDULE selector, float delay); /** 定时一个仅运行一次的选择器*/
void unschedule(SEL_SCHEDULE selector); /** 取消定时一个选择器*/
void unscheduleAllSelectors(void); /** 取消所有定时器,包括update选择器。动作不受影响*/
void resumeSchedulerAndActions(void); /** 恢复所有定时器和动作,被onEnter内部调用*/
void pauseSchedulerAndActions(void); /** 暂停所有定时器和动作,被onExit内部调用*/