MoonWarrior cocos2d-x版本 --1
来源:互联网 发布:网络电视频道大全图标 编辑:程序博客网 时间:2024/05/29 18:07
网上好像有这个版本了,但是人家是人家做的,自己动手敲一遍代码感觉还是不一样的
MoonWarrior cocos2d-x里面是用JS绑定来实现的,效果写的还挺好的,麻雀虽小五脏俱全,改成C++,既熟悉了cocos2d-x,也复习了前段时间学的js
把win32的环境搭建好以后,新建一个cocos2d-x的工程,这篇就写Menu吧
新建一个类,继承自CCLayer,
需要写两行代码
virtual bool init();CREATE_FUNC(LoadingScene);
CREATE_FUNC是个宏定义,就是实现了create的方法,而create方法会调用init方法来初始化
bool bRet = false;do{//////////////////////////////////////////////////////////////////////////// super init first//////////////////////////////////////////////////////////////////////////CC_BREAK_IF(! CCLayer::init()); CCSize winSize = CCDirector::sharedDirector()->getWinSize();
//加了两个图片进来CCSprite* background = CCSprite::create("loading.png");background->setAnchorPoint(ccp(0,0));this->addChild(background,0,1);CCSprite* logo = CCSprite::create("logo.png");logo->setAnchorPoint(ccp(0,0));logo->setPosition(ccp(0,250));this->addChild(logo,10,1);
//三个menu进来,menu也是有状态的,直接就可以生成了
// ccrect 裁剪rect的时候是从左上角的位置开始的CCSprite* newGameNormal = CCSprite::create("menu.png",CCRectMake(0, 0, 126, 33));//cc.Sprite.create(s_menu, cc.rect(0, 0, 126, 33));CCSprite* newGameSelected = CCSprite::create("menu.png", CCRectMake(0, 33, 126, 33));CCSprite* newGameDisabled = CCSprite::create("menu.png", CCRectMake(0, 33 * 2, 126, 33));CCSprite* gameSettingsNormal = CCSprite::create("menu.png", CCRectMake(126, 0, 126, 33));CCSprite* gameSettingsSelected = CCSprite::create("menu.png", CCRectMake(126, 33, 126, 33));CCSprite* gameSettingsDisabled = CCSprite::create("menu.png", CCRectMake(126, 33 * 2, 126, 33));CCSprite* aboutNormal = CCSprite::create("menu.png", CCRectMake(252, 0, 126, 33));CCSprite* aboutSelected = CCSprite::create("menu.png", CCRectMake(252, 33, 126, 33));CCSprite* aboutDisabled = CCSprite::create("menu.png", CCRectMake(252, 33 * 2, 126, 33));CCMenuItem* newGame = CCMenuItemSprite::create(newGameNormal,newGameSelected,newGameDisabled,this,menu_selector(LoadingSense::newGameCallback));CCMenuItem* gameSettings = CCMenuItemSprite::create(gameSettingsNormal,gameSettingsSelected,gameSettingsDisabled,this,menu_selector(LoadingSense::onSettings));CCMenuItem* about = CCMenuItemSprite::create(aboutNormal,aboutSelected,aboutDisabled,this,menu_selector(LoadingSense::onAbout));//cc.MenuItemSprite.create(aboutNormal, aboutSelected, aboutDisabled, this, this.onAbout);CCMenu* menu = CCMenu::create(newGame,gameSettings,about,NULL);//CCMenu::create(newGame, gameSettings, about);menu->alignItemsVerticallyWithPadding(10);this->addChild(menu, 1, 2);menu->setPosition(ccp(winSize.width / 2, winSize.height / 2 - 80));
//这个schedule是让背景的那个小飞机飞到顶端了,还能从下面接着飞//this->schedulethis->schedule(schedule_selector(LoadingSense::update), 0.1);CCTexture2D* tmp = CCTextureCache::sharedTextureCache()->addImage("ship01.png");m_pShip = CCSprite::createWithTexture(tmp,CCRectMake(0, 45, 60, 38));this->addChild(m_pShip,0,4);CCPoint pos = ccp(((float)(rand()%10)/10)*winSize.width, 0);//让飞机从底下飞到上边m_pShip->setPosition(pos);//m_pShip->setPosition(ccp(100,100));m_pShip->runAction(CCMoveBy::create(2,ccp(((float)(rand()%10)/10)*winSize.width,pos.y+winSize.height + 100)));//m_pShip->runAction(CCMoveBy::create(2,ccp(200,200)));
//播放音乐if(true){CocosDenshion::SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.7);CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic(s_mainMainMusic,true);}bRet = true;}while(0);return bRet;
转一篇关于锚点的 http://blog.csdn.net/cjopengler/article/details/7045638
基本的都有了,下面再看一个动画效果,点击new game以后,会有一个效果,看看这个效果怎么做的
CCSprite* flare = CCSprite::create("flare.jpg"); ccBlendFunc ccBF = {GL_SRC_ALPHA, GL_ONE};
flare->setBlendFunc(ccBF); parent->addChild(flare, 10); flare->setOpacity(0); flare->setPosition(ccp(-30, 297)); flare->setRotation(-120); flare->setScale(0.2); CCFadeTo* opacityAnim = CCFadeTo::create(0.5, 255); CCFadeTo* opacDim = CCFadeTo::create(1, 0); CCScaleBy* biggeAnim = CCScaleBy::create(0.7, 1.2, 1.2); CCEaseSineOut* biggerEase = CCEaseSineOut::create(biggeAnim); CCMoveBy* moveAnim = CCMoveBy::create(0.5, ccp(328, 0)); CCEaseSineOut* easeMove = CCEaseSineOut::create(moveAnim); CCRotateBy* rotateAnim = CCRotateBy::create(2.5, 90); CCEaseExponentialOut* rotateEase = CCEaseExponentialOut::create(rotateAnim); CCScaleTo* bigger = CCScaleTo::create(0.5, 1); CCCallFunc* onComplete = CCCallFunc::create(target, callback); CCCallFunc* killflare = CCCallFunc::create(target, callfunc_selector(LoadingSense::killFlare)); flare->runAction(CCSequence::create(opacityAnim, biggerEase, opacDim, killflare, onComplete,NULL)); flare->runAction(easeMove); flare->runAction(rotateEase); flare->runAction(bigger);
关于cocos2d-x的动画,简单点的可以看http://blog.csdn.net/odustggg/article/details/8187843
这样背景 菜单 点击newGame之后的动画效果都就有了,后面就是该做游戏的重头戏了
- MoonWarrior cocos2d-x版本 --1
- Cocos2D-X SimpleGame 如何添加一个cocos2d-x精灵 (1) ----版本cocos2d-2.0-x-2.0.3
- cocos2d-x 3.0 版本学习笔记1
- Cocos2d-x版本升级
- Cocos2d-x版本升级
- pgeRippleSprite cocos2d-x版本移植
- cocos2d-x 版本升级问题
- cocos2d-x IOS版本发布
- cocos2d.x 各个版本API
- Cocos2d-x 3.10版本 UserDefault
- Cocos2d-x 3.10版本 进度条
- 重走Cocos2d-x之路(1) Cocos2d-x 3.15.1版本
- cocos2d-x(vs2012)环境搭建(第一篇)[版本:cocos2d-x-3.1.1]
- cocos2d-x之android编译环境搭建(第二篇)[版本:cocos2d-x-3.1.1]
- cocos2d-x新手学习之Helloworld(第三篇)[版本:cocos2d-x-3.1.1]
- Cocos2d-x新手学习之TestCpp项目结构分析(第四篇)[版本:cocos2d-x-3.1.1]
- Cocos2d-x入门之坐标系,场景切换,动作(第五篇)[版本:cocos2d-x-3.1.1]
- Cocos2d-x 3.x版本---创建项目
- cocos2d-x-2.0.4的网络连接库CCHttpClient的BUG
- Mms 杂项与彩信附件加载
- 使用Memcached提高.NET应用程序的性能
- HDU2037:今年暑假不AC
- Extjs4 使用store的post方法
- MoonWarrior cocos2d-x版本 --1
- session中object转化为int
- 集群中几种session同步解决方案的比较
- ABAP Function SAPGUI_PROGRESS_INDICATOR
- LightOJ 1193 Dice (II)
- Unable to execute dex: Multiple dex files define 解决方法
- Oracle条件语句的用法
- java 用FlexPaper+SWFTools实现文章可看不可复制黏贴,转化swf,当文件名中含有多个空格,转化失败的原因及解决办法
- Java - 地理地区 Locale