cocos2d-x学习五结合四增加音乐、场景
来源:互联网 发布:怎么连接tor网络 编辑:程序博客网 时间:2024/05/24 05:00
新场景
#pragma once#include "cocos2d.h"class GmOvLayer : public cocos2d::CCLayerColor{public:GmOvLayer(void);virtual ~GmOvLayer(void);bool init();CREATE_FUNC(GmOvLayer);static cocos2d::CCScene* scene();void setLableCont(char *str);void menuHandle(CCObject* pSender);private:cocos2d::CCLabelTTF *m_lb;};
要让cocos2d-x 来管理内存对象 ,你所写的每一个对象必须继承 于ccobject .
如果是new 出来的对象 ,初始retainCount 为1 , 这个对象 默认是由你 手动来释放的 (调用ccobject 的release , 如果retainCount 为0 ,cocos2d-x会delete 掉这个对象)。
如果new 出来的对象调用 了autorelease(),对象 就完全由cocos2d-x来管理,你不需要去手动release ,它会在某一时刻来自动release.
注意:
1. 当对象没有调用autorelease 时,retainCount 还为1, 那么需要你手动release.否则内存溢出。
2. 如果对象调用 了autorelease ,但是后面你如果还想用到这个对象你需要手工retain一下。 retain 会导致retainCount 加1 ,所以retain后,如果你不想用了记得release掉。
#include "GmOvLayer.h"#include "HelloWorldScene.h"USING_NS_CC;GmOvLayer::GmOvLayer(void){}GmOvLayer::~GmOvLayer(void){if(m_lb){m_lb->release();}}CCScene* GmOvLayer::scene(){CCScene *scene = CCScene::create();GmOvLayer *layer = GmOvLayer::create();layer->setTag(100);scene->addChild(layer);return scene;}bool GmOvLayer::init(){if(!CCLayerColor::initWithColor(ccc4(255,0,0,255))){return false;}CCSize size = CCDirector::sharedDirector()->getVisibleSize();CCMenuItemImage *pBackItem = CCMenuItemImage::create( "button2.png", "button2.png", this, menu_selector(GmOvLayer::menuHandle));pBackItem->setPosition(pBackItem->getContentSize().width/2,pBackItem->getContentSize().height/2); CCMenu* pMenu = CCMenu::create(pBackItem, NULL);pMenu->setPosition(CCPointZero); this->addChild(pMenu, 1);m_lb = CCLabelTTF::create("word","artial",40);m_lb->setPosition(ccp(size.width/2,size.height/2));this->addChild(m_lb);m_lb->retain();//保证m_lb跟类对象有相同生命周期return true;}void GmOvLayer::menuHandle(CCObject* pSender){CCDirector::sharedDirector()->replaceScene(HelloWorld::scene());}void GmOvLayer::setLableCont(char *str){m_lb->setString(str);}
主场景
添加背景音乐
bool HelloWorld::init(){ ////////////////////////////// // 1. super init first if ( !CCLayerColor::initWithColor(ccc4(255,255,255,255))) { return false; } m_arrTar = new CCArray;m_arrPro = new CCArray;m_nSucessedCount = 0;CCSize screenSize = CCDirector::sharedDirector()->getVisibleSize();CCSprite *pSprite = CCSprite::create("Player.png");pSprite->setPosition(ccp(20.0,screenSize.height/2));this->addChild(pSprite); this->schedule(schedule_selector(HelloWorld::time),2);this->schedule(schedule_selector(HelloWorld::update));this->setTouchEnabled(true);CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("background-music-aac.wav",true); return true;}
添加发射子弹音乐
void HelloWorld::ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent) {CCTouch *touch = (CCTouch *)pTouches->anyObject();CCPoint locInVw = touch->getLocationInView();CCPoint locInGl = CCDirector::sharedDirector()->convertToGL(locInVw);CCSize screenSize = CCDirector::sharedDirector()->getVisibleSize();CCSprite *proj = CCSprite::create("Projectile.png");proj->setPosition(ccp(20.0,screenSize.height/2.0));this->addChild(proj);m_arrPro->addObject(proj);proj->setTag(2);CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("pew-pew-lei.wav"); double dx = locInGl.x - 20;double dy = locInGl.y - screenSize.height/2.0;double d = sqrt(dx*dx + dy*dy);double D = sqrt(screenSize.width * screenSize.width + screenSize.height * screenSize.height);double ratio = D/d;double endx = ratio * dx + 20;double endy = ratio *dy + screenSize.height/2.0;CCMoveTo *move = CCMoveTo::create(D/320,ccp(endx,endy));CCCallFuncN *sd = CCCallFuncN::create(this,callfuncN_selector(HelloWorld::selfdefinedAc));CCSequence *actions = CCSequence::create(move,sd,NULL);proj->runAction(actions);}
添加打怪5个切换成功界面
void HelloWorld::update(float val){CCObject *tar,*pro;if(5 == m_nSucessedCount){switchScene("success");}CCARRAY_FOREACH(m_arrTar,tar){CCSprite *pTar = (CCSprite *)tar;CCRect rtTar = CCRectMake(pTar->getPosition().x,pTar->getPosition().y,pTar->getContentSize().width,pTar->getContentSize().height);CCARRAY_FOREACH(m_arrPro,pro){CCSprite *pPro = (CCSprite *)pro;CCRect rtPro = CCRectMake(pPro->getPosition().x,pPro->getPosition().y,pPro->getContentSize().width,pPro->getContentSize().height);if(rtPro.intersectsRect(rtTar)){m_arrTar->removeObject(pTar);m_arrPro->removeObject(pPro);pTar->removeFromParentAndCleanup(true);pPro->removeFromParentAndCleanup(true);m_nSucessedCount ++;break;}}}}
添加有没打到的怪切换失败界面
void HelloWorld::selfdefinedAc(CCNode* pSender){pSender->removeFromParentAndCleanup(true);int tag = pSender->getTag();if(1 == tag){m_arrTar->removeObject(pSender);switchScene("failed");}else if(2 == tag){m_arrPro->removeObject(pSender);}}
添加切换界面方法
void HelloWorld::switchScene(char* str){CCScene *scene = GmOvLayer::scene();GmOvLayer *goLayer = (GmOvLayer *)scene->getChildByTag(100);goLayer->setLableCont(str);CCDirector::sharedDirector()->replaceScene(scene);m_nSucessedCount = 0;}
0 0
- cocos2d-x学习五结合四增加音乐、场景
- Cocos2d-x学习笔记(四)-------->场景切换
- 【爱上cocos2d-x之五】场景CCScene
- cocos2d-x 菜鸟学习笔记四(游戏场景与场景切换)
- cocos2d-x学习四子弹打怪兽结合二、三学习
- [cocos2d-x 学习] Scene(场景)学习
- Cocos2d-x学习笔记(五)实例——场景切换
- cocos2d-x初探学习笔记--音乐音效
- cocos2d-x初探学习笔记--音乐音效
- Cocos2D-X学习9:播放音乐
- 小羊驼和你一起学习cocos2d-x之五(结合摇杆控制玩家走动)
- 我的Cocos2d-x学习笔记(四)场景转换特效
- Cocos2d-x 3.x学习笔记:猩先生带你打飞机(五)敌我碰撞处理、分数计算、音乐播放
- Cocos2d-x学习笔记一 创建场景
- 【Cocos2d-x 3.0学习笔记】场景切换
- cocos2d-x学习之场景切换
- 【COCOS2D-X LUA学习】 场景创建
- cocos2d-x 3.0学习-创建菜单场景
- 图文详解YUV420数据格式
- 无法使用sudo命令
- QT小技巧总结(转)
- 大数据技术的发展趋势
- linux 僵尸进程消除方法分析比较
- cocos2d-x学习五结合四增加音乐、场景
- setTimeout和setinterval
- 找到一篇关于 Oracle 全文检索实践 的文章
- 也许这就是九博吧
- 详解Oracle RAC入门和提高
- 二分法查找
- Form 中调用并发请求生成报表并输出PDF的方法
- Win 8.1 删除默认输入法
- 用highcharts写的一个流程图