标签:
Cocos2dx 中的主要概念包括:应用、导演、场景、图层、精灵、动画、动作。层次关系如下:
使用方法:Director::getInstance()->MethodName
//获得当前运行的场景,cocos2dx同时只能运行一个场景 Scene* getRunningScene(); //获取fps值 double getAnimationInterval(); //设置fps值 void setAnimationInterval(double dValue); //fps是否是显示状态 bool isDisplayStats(); //设置是否显示fps void setDisplayStats(bool bDisplayStats); //获取每帧秒数 float getSecondsPerFrame(); //获取openGLView GLView* getOpenGLView(); //设置openGLView void setOpenGLView(GLView *pobOpenGLView); //判断是否暂停 bool isPaused(); //获取调用到现在的所有帧数 unsigned int getTotalFrames(); //判断被替换的场景是否接收到cleanup事件 //replace方式会,而push方式则不会 bool isSendCleanupToScene(void);
//返回以点为单位openGL视图的大小 const Size& getWinSize() const; //返回以像素为单位openGL视图的大小 Size getWinSizeInPixels() const; //返回以点为单位的 OpenGL 视图的可见大小. Size getVisibleSize() const; //返回以点为单位的 OpenGL 视图的初始化时的可见大小 Vec2 getVisibleOrigin() const; //UIKit的坐标转换到一个OpenGL坐标 使用当前布局(横向或纵向)有效的(多)触摸坐标 Vec2 convertToGL(const Vec2& point); //一个OpenGL坐标转换到UIKit的坐标 点组成的窗口调用有效的节点上面的点 Vec2 convertToUI(const Vec2& point);
//根据给定的场景进入 Director的主循环 只能调用他运行你的第一个场景 void runWithScene(Scene *scene); //暂停执行正在运行的场景中,pushing一个在堆栈上推暂停的场景。 新的场景将被执行. void pushScene(Scene *scene); //从队列中弹出一个场景。 这个场景将替换正在运行的场景. void popScene(); //从队列中弹出所有的场景,直到只有根场景在队列中 这个场景将替换正在运行的场景. void popToRootScene(); //弹出从队列中的所有场景,直到它到达 level. void popToSceneStackLevel(int level); //用一个新的替换正在运行的场景。终止正在运行的场景。 仅在有一个正在运行的场景的时候调用他. void replaceScene(Scene *scene); //结束执行,释放正在运行的场景。 void end(); //暂停正在运行的场景。 void pause(void); //恢复暂停的场景 预定的定时器将被再次激活。 “推迟执行”的时间将是0(如果游戏没有暂停) void resume();
Layer是处理玩家事件响应的Node子类。与场景不同,层通常包含的是直接在屏幕上呈现的内容,并且可以接受用户的输入事件,包括触摸、键盘输入等。我们需要在层中加入Sprite(精灵)、文本标签或者其它游戏元素,并设置游戏元素的属性,比如位置、方向和大小;设置游戏元素的动作等。在我们设计好层以后,只需要把层按照顺序添加到场景中就可以显示出来了。一个场景中有多个可以交互的图层,每层显示不同的角色信息
Layer层一方面作为容器使用,另一方面处理相关事件的响应(如触摸点击、用户输入等等…)。
父类:
//初始化函数 virtual bool init(); //分配内存,默认创建一个全屏的黑色布景层 static Layer *create(void); //层进入回调 virtual void onEnter(); //层退出回调 virtual void onExit(); //如果层进入伴随转换效果,效果完成时回调 virtual void onEnterTransitionDidFinish(); //触摸事件(单点) virtual bool onTouchBegan(Touch *touch, Event *unused_event); virtual void onTouchMoved(Touch *touch, Event *unused_event); virtual void onTouchEnded(Touch *touch, Event *unused_event); virtual void onTouchCancelled(Touch *touch, Event *unused_event); //触摸事件(单点和多点) virtual void onTouchesBegan(const std::vector<Touch*>& touches, Event *unused_event); virtual void onTouchesMoved(const std::vector<Touch*>& touches, Event *unused_event); virtual void onTouchesEnded(const std::vector<Touch*>& touches, Event *unused_event); virtual void onTouchesCancelled(const std::vector<Touch*>&touches, Event *unused_event); //注册触摸分发,默认是addStandardDelegate virtual void registerWithTouchDispatcher(void); //判断触屏事件是否开启 bool isTouchEnabled(); //开启或关闭触屏事件 void setTouchEnabled(bool value); //设置/获取触摸模式 void setTouchMode(Touch::DispatchMode mode) Touch::DispatchMode getTouchMode(); //触屏事件中的 swallowsTouches 事件。默认是true. void setSwallowsTouches(bool swallowsTouches); bool isSwallowsTouches() const; //设置/获取是否接收键盘事件 bool isKeypadEnabled(); void setKeypadEnabled(bool value); //返回键和菜单键的回调,需要设置接收键盘事件 void keyBackClicked(void); void keyMenuClicked(void);
精灵实际上可以说就是游戏总的主角,游戏中我们可操作的人物、宠物等待。我们所看到的精灵本质上就是一个静态的二维图。在Cocos2d-x里面精灵是用Sprite类来进行表示的,它可以用一张图片或者一张图片的一块矩形部分来定义。
//创建一个无纹理Sprite,可以在创建后调用setTexture方法设置纹理。 更多... static Sprite* create(); //指定图像文件名创建Sprite static Sprite* create(const std::string& filename); //指定图像文件名及Rect参数创建Sprite static Sprite* create(const std::string& filename, const Rect& rect); //指定Texture2D纹理对象创建Sprite static Sprite* createWithTexture(Texture2D *texture); //指定Texture2D纹理对象及Rect参数创建Sprite static Sprite* createWithTexture(Texture2D *texture, const Rect& rect, bool rotated=false); //指定Sprite帧(SpriteFrame)创建Sprite static Sprite* createWithSpriteFrame(SpriteFrame *spriteFrame); //指定Sprite帧名称创建Sprite static Sprite* createWithSpriteFrameName(const std::string& spriteFrameName);
//对未初始化的空Sprite执行初始化操作 virtual bool init(void); //指定Texture2D纹理初始化Sprite,精灵大小即是纹理大小 virtual bool initWithTexture(CCTexture2D *pTexture); //指定Texture2D纹理对象及Rect参数初始化Sprite virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect); //指定Texture2D纹理对象、Rect参数及是否旋转初始化Sprite virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect, bool rotated); //指定SpriteFrame初始化Sprite,SpriteFrame中的纹理(texture)和Rect参数将被用于此Sprite virtual bool initWithSpriteFrame(CCSpriteFrame *pSpriteFrame); //指定Sprite帧名称初始化Sprite virtual bool initWithSpriteFrameName(const char *pszSpriteFrameName); //指定图像文件初始化Sprite virtual bool initWithFile(const char *pszFilename); //指定图像文件名及Rect参数初始化Sprite virtual bool initWithFile(const char *pszFilename, const CCRect& rect);
//设置节点的缩放(x) virtual void setScaleX(float fScaleX); //设置节点的缩放(y) virtual void setScaleY(float fScaleY); //设置节点的缩放(x,y) virtual void setScale (float scaleX, float scaleY); //设置节点在它父节点坐标系中的位置 virtual void setPosition(const Vec2& pos); virtual void setPosition(float x, float y); //设置节点的旋转(angle)角度 virtual void setRotation(float rotation); //设置节点X轴的旋转角度,表现为水平旋转倾斜 virtual void setRotationSkewX(float rotationX); //设置Y轴节点的旋转角度,表现为垂直旋转倾斜 virtual void setRotationSkewY(float rotationY); //改变该节点X轴的倾斜角,单位是度 virtual void setSkewX(float sx); //改变该节点Y轴的倾斜角,单位是度 virtual void setSkewY(float sy); //从容器中删除一个孩子,取决于cleanup参数同时会清除所有的活动的动作 virtual void removeChild(Node* child, bool cleanup); //从容器中删除所有的孩子, 取决于cleanup参数同时会清除所有的活动的动作 virtual void removeAllChildrenWithCleanup(bool cleanup); //对一个孩子重新排序,设定一个新的z轴的值 virtual void reorderChild(Node *child, int zOrder); //在绘画之前,排列所有的孩子数组一次,而不是每次添加或者删除子节点时都排序。 这个方法可以大量地提高性能 virtual void sortAllChildren(); //添加一个子节点到容器中 virtual void addChild(Node *Child); virtual void addChild(Node *child, int zOrder, int tag); virtual void addChild(Node *Child, int zOrder, int tag); //设置几点的缩放(x,y,z) virtual void setScale(float fScale); //设置位置的“z”轴坐标系,是OpneGL Z 定点值 virtual void setVertexZ(float fVertexZ);
标签:
原文地址:http://blog.csdn.net/shimazhuge/article/details/45247951