cocos2dx基础篇(3) 常用重要类

本文详细介绍了cocos2dx的基础类,包括入口类main.cpp、AppDelegate.cpp,对象类CCObject,节点类CCNode,导演类CCDirector,场景类CCScene,图层类CCLayer,精灵类CCSprite,以及坐标类CCPoint,尺寸大小类CCSize,矩形类CCRect和数组类CCArray。每个类都阐述了其作用和主要函数,帮助理解cocos2dx的游戏开发框架。
摘要由CSDN通过智能技术生成
  • ----------------------------------------

  • 入口类main.cpp

  • 主要控制类AppDelegate.cpp

  • ----------------------------------------

  • 对象类CCObject

  • 节点类CCNode

  • ----------------------------------------

  • 导演类CCDirector

  • 场景类CCScene

  • 图层类CCLayer

  • 精灵类CCSprite

  • ----------------------------------------

  • 坐标类CCPoint

  • 尺寸大小类CCSize

  • 矩形类CCRect

  • ----------------------------------------

  • 数组类CCArray

  • ----------------------------------------

入口类main.cpp

    这是应用程序的入口类,用于创建cocos2dx的AppDelegate实例、窗口大小、以及运行程序。

    主要代码如下:

	// 创建一个主控制类AppDelegate
    AppDelegate app;  
	// 使用OpenGL进行图形渲染
    CCEGLView* eglView = CCEGLView::sharedOpenGLView();
	// 窗口名
    eglView->setViewName("CocosStudy");
	// 窗口大小
    eglView->setFrameSize(480, 320);
	// 运行
    return CCApplication::sharedApplication()->run();

 

主要控制类AppDelegate.cpp

    游戏的入口,用于游戏的初始化,并创建第一个游戏界面。

    里面有3个方法:

	// 初始化
    virtual bool applicationDidFinishLaunching();

	// 切换到后台
    virtual void applicationDidEnterBackground();

	// 切换到前台
    virtual void applicationWillEnterForeground();

    源码:

// 初始化
bool AppDelegate::applicationDidFinishLaunching() { 

	// 创建导演
	CCDirector* pDirector = CCDirector::sharedDirector();
	// 使用OpenGLView
	pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());
	// 设置游戏的设计分辨率
	CCEGLView::sharedOpenGLView()->setDesignResolutionSize(480, 320, kResolutionShowAll);

	// 关闭帧数显示
	pDirector->setDisplayStats(false);

	// 刷新频率,每秒60帧
	pDirector->setAnimationInterval(1.0 / 60);

	// 创建一个场景HelloWorld,游戏程序的第一个界面
	CCScene *pScene = HelloWorld::scene();

	// 运行场景
	pDirector->runWithScene(pScene);

	return true;
}

// 切换到后台
void AppDelegate::applicationDidEnterBackground() {

	// 暂停游戏
	CCDirector::sharedDirector()->stopAnimation();

	// 暂停音乐,需要时打开
	//SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}

// 切换到前台
void AppDelegate::applicationWillEnterForeground() {

	// 游戏恢复
	CCDirector::sharedDirector()->startAnimation();

	// 音乐恢复,需要时打开
	//SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}

  在main.cpp中,我们设置了分辨率“eglView->setFrameSize(480, 320)”(1),在这里我们又设置了分辨率“CCEGLView::sharedOpenGLView()->setDesignResolutionSize(480,320,kResolutionShowAll)”(2),但是它们的意义不同。(1)是根据我们的期望屏幕大小设置的,(2)是设计时的游戏分辨率,我们最初的设计是在电脑上完成的,这个大小是在电脑上显示的大小,但是游戏移植到手机后,手机型号不同,所以后面的参数kResolutionShowAll表示按照原比例(480x320)进行缩放来适配手机屏幕。

    如果图片的大小为1x1,setFrameSize(1, 1),那么setDesignResolutionSize(1,1)后,即使没有设置kResolutionShowAll,图片也能铺满整个屏幕。但是,如果setFrameSize(2, 2),如果setDesignResolutionSize(2,2)后,如果没有设置kResolutionShowAll,那么图片只会铺满屏幕的1/4,只有设置kResolutionShowAll,屏幕才会缩放到整个屏幕。

 

对象类CCObject

    这个类是所有类的开始,主要包含了节点的内存管理机制,内存的释放、保留、复制等操作。

    有兴趣的可以自己去找资料学一下内存管理机制。

    主要函数如下:

void release(void);                                   //释放资源
void retain(void);                                    //保留资源,不被回收
CCObject* autorelease(void);                          //设置实例对象的释放由内存管理器进行管理,实现自动释放
CCObject* copy(void);                                 //拷贝对象
bool isSingleReference(void) const;                   //判断对象是否只有一个使用者
unsigned int retainCount(void) const;                 //返回内存计数器,即对象的使用者个数
virtual bool isEqual(const CCObject* pObject);        //判断是否与pObject对象相同
virtual void update(float dt) {CC_UNUSED_PARAM(dt);}; //更新函数,与scheduleUpdate()对应
friend class CCAutoreleasePool;                       //友元类,管理对象的内存使用情况
//

 

节点类CCNode

    CCNode类是绝大部分类的父类(并不是所有的类,例如CCDirector类是直接继承CCObject类的),如CCScene、CCLayer、CCSprite以及精灵集合CCSpriteBatchNode等等等等的父类都是CCNode。

    CCNode类包含了一些基本的属性、节点相关、Action动作的执行、以及定时器等相关的操作。

    当然CCNode也有父类,其父类为CCObject。

    继承关系如下:

wKiom1PsSwjx7-B9AAAwExS1jxg442.jpg

主要函数如下:

/**
 *    属性相关函数
 *    Visible , ContentSize , Position , AnchorPoint , 
 *    ZOrder , Scale , Skew , Rotation
 */

//设置节点是否可见.
virtual void setVisible(bool visible);
virtual bool isVisible();

//设置节点的尺寸大小.即节点的容器大小.
virtual void setContentSize(const CCSize& contentSize);
virtual const CCSize& getContentSize() const;

//设置节点的坐标(x,y).在OpenGL中的坐标
virtual void setPosition(const CCPoint &position); //传参为坐标类CCPoint
virtual const CCPoint& getPosition();
virtual void setPosition(float x, float y);
virtual void getPosition(float* x, float* y);
virtual void  setPositionX(float x);
virtual float getPositionX(void);
virtual void  setPositionY(float y);
virtual float getPositionY(void);

//设置节点的锚点.
//锚点就像一枚图钉,将图片钉在屏幕上.而锚点就是图片的坐标.
//当然图钉可以钉在图片的左下角,右上角,或者中心都可以.
//一般由CCNode继承的子类大多锚点都在中心,也有些是在左下角.
virtual void setAnchorPoint(const CCPoint& anchorPoint);
virtual const CCPoint& getAnchorPoint();
virtual const CCPoint& getAnchorPointInPoints();

//设置节点的Z轴.
//当有多个节点在Z轴显示时,引擎会根据它们Z轴的大小决定绘制顺序,Z轴大的会遮盖Z轴小的
virtual void setZOrder(int zOrder);
virtual int getZOrder();

//设置节点的放缩比例.对X轴或Y轴进行放缩
//例如一张图片. 放缩它的宽X,和高Y
virtual void setScaleX(float fScaleX);              //放缩宽X
virtual float getScaleX();
virtual void setScaleY(float fScaleY);              //放缩高Y
virtual float getScaleY();
virtual void setScale(float scale);                 //同时放缩X与Y
virtual float getScale();
virtual void setScale(float fScaleX,float fScaleY); //X放缩fScaleX倍,Y放缩fScaleY倍

//设置节点的倾斜角度.与平面的倾斜角度
//如一张图片. X轴倾斜fSkewX角度,Y轴倾斜fSkewY角度
virtual void setSkewX(float fSkewX);
virtual float getSkewX();
virtual void setSkewY(float fSkewY);
virtual float getSkewY();

//设置节点旋转角度.
virtual void setRotation(float fRotation);
virtual float getRotation();
virtual void setRotationX(float fRotaionX);
virtual float getRotationX();
virtual void setRotationY(float fRotationY);
virtual float getRotationY();


/**
 *    节点相关函数
 *    addChild , removeChild , setParent , removeFromParent ,
 *    reorderChild , sortAllChildren , setTag , 
 *    getCamera , isRunning , cleanup , 
 *    draw , visit , boundingBox ,
 *    onEnter , onEnterTransitionDidFinish , onExit
 */

//添加子节点.zOrder默认为0.
//tag为节点编号,可以通过tag获取子节点.
virtual void addChild(CCNode * child);
virtual void addChild(CCNode * child, int zOrder);
virtual void addChild(CCNode* child, int zOrder, i
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值