二、创建游戏窗口界面动画.doc_第1页
二、创建游戏窗口界面动画.doc_第2页
二、创建游戏窗口界面动画.doc_第3页
二、创建游戏窗口界面动画.doc_第4页
二、创建游戏窗口界面动画.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二、创建游戏窗口界面动画1. 打开项目,添加游戏界面类InGameLayer,同样加入头文件和域名空间,具体内容上次试验指导有。2. 编写每个类必要的初始化函数#pragma once#include c:cocos2d-x-2.2.1cocos2dxlayers_scenes_transitions_nodescclayer.h#include cocos2d.husing namespace cocos2d;class InGameLayer :public CCLayerpublic:InGameLayer(void);InGameLayer(void);public:CREATE_FUNC(InGameLayer);virtual bool init(); /场景初始化/ theres no id in cpp, so we recommend returning the class instance pointerstatic cocos2d:CCScene* CreateScene();/场景对象函数;CCScene* InGameLayer:CreateScene()/ scene is an autorelease objectCCScene *scene = CCScene:create();/ layer is an autorelease objectInGameLayer *layer = InGameLayer:create();/ add layer as a child to scenescene-addChild(layer);/ return the scenereturn scene;bool InGameLayer:init()bool b1 = CCLayer:init();Winsize=CCDirector:sharedDirector()-getVisibleSize();return b1;3. 添加战斗场景背景类GameObject,用于存放背景滚动效果#pragma once#include c:cocos2d-x-2.2.1cocos2dxlayers_scenes_transitions_nodescclayer.h#include cocos2d.husing namespace cocos2d;class GameObject :public CCLayerpublic:GameObject(void);GameObject(void);public:CREATE_FUNC(GameObject);virtual bool init(); void move();/设置背景移动函数/ theres no id in cpp, so we recommend returning the class instance pointerprivate:cocos2d:CCSprite* back1;/第一张背景图cocos2d:CCSprite* back2;/第二张背景图float vy;/背景移动速度;在GameObject.cpp下实现该实现的函数首先对3个变量在构造函数进行初始化GameObject:GameObject(void)back1=NULL;back2=NULL;vy =5.5f;/实现初始化和移动函数bool GameObject:init()bool b1 = CCLayer:init();back1 =CCSprite:create(bg_02.png);/载入第一张背景图this-addChild(back1);back1-setAnchorPoint(ccp(0,0);/设置对应的坐标back1-setPosition(ccp(0,0);/设置位置back2 =CCSprite:create(bg_01.png);/载入第二张背景图this-addChild(back2);back2-setAnchorPoint(ccp(0,0);/设置对应的坐标back2-setPosition(ccp(0,back1-getPositionY()+back1-getContentSize().height- 2);/将图片放在图片1上的位置上return b1;void GameObject:move()/计算移动速度float oneNextPos= back1-getPositionY() - vy;float twoNextPos= back2-getPositionY() - vy;/设置图片跑起来back1-setPositionY(oneNextPos);/设置图片1的Y坐标back2-setPositionY(twoNextPos);/设置图片2的Y坐标if (oneNextPos getContentSize().height)/将第一张图片设置为第二张的高度,第一张图片压在第二张图片上面oneNextPos=back2-getPositionY() + back2-getContentSize().height;back1-setPositionY(oneNextPos);else if(twoNextPos getContentSize().height)/与上面同理twoNextPos=back1-getPositionY() + back1-getContentSize().height;back2-setPositionY(twoNextPos);4. 在InGameLayer.h中加入GameObject头文件,并且申明对象mBack#include GameObject.hGameObject* mBack;/背景对象/在构造函数中对指针赋为NULL;InGameLayer:InGameLayer(void)mBack = NULL;在init函数中加入背景滚动效果mBack = GameObject:create();/初始化mBack this-addChild(mBack); /设置锚点 mBack-setAnchorPoint(ccp(0,0);/设置锚点 mBack-setPosition(0,0);/设置位置mBack-move();/将背景图移动起来5. 注册动画效果函数在InGameLayer.h中加入三个重要的函数,并实现virtual void onEnterTransitionDidFinish();/完全进入场景执行的函数void gameStart();/开始游戏void gameStep(float dt);/游戏动画/完全进入场景执行的函数void InGameLayer:onEnterTransitionDidFinish()gameStart();/执行游戏开始函数/游戏开始函数void InGameLayer:gameStart()this-schedule(SEL_SCHEDULE(&InGameLayer:gameStep),0.02f);/提供接口开启时间调用函数,0.02秒调用一次/游戏动画调用函数void InGameLayer:gameStep(float dt)mBack-move();/每过0.02秒移动背景图片6. 在WelcometoGame.cpp中加入头文件,并且实现按钮函数#include InGameLayer.hvoid WelcometoGame:btnPlayMenuCallBack(CCObject* pSender)/替换当前场景CCDirector:sharedD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论