首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

【Cocos2d-x游戏发动机开发笔记(6)】触屏事件与多媒体

2012-12-22 
【Cocos2d-x游戏引擎开发笔记(6)】触屏事件与多媒体原创文章,转载请标明出处:http://blog.csdn.net/zhy_chen

【Cocos2d-x游戏引擎开发笔记(6)】触屏事件与多媒体

原创文章,转载请标明出处:http://blog.csdn.net/zhy_cheng/article/details/8273435

Cocos2d-x要实现触屏事件,首先覆盖父类的onEnter函数,在这个函数中设置触屏事件。

void HelloWorld::onEnter(){CCLog("onEnter");CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,//在那个类中实现触屏回调函数0, //优先级true);//触摸时间是否被该目标截获}


这表示进入布景后就注册触屏事件

然后覆盖触屏的回调函数

    virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);    virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);    virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);    virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);


在回调函数中,打印触摸的点

bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent){CCLog("ccTouchBegan");CCPoint p=pTouch->getLocation(); //获取触摸点float x=p.x;float y=p.y;char *buf=new char[40];memset(buf,0,10);//全部置0sprintf(buf,"x=%f,y=%f",x,y);//格式化到buf中CCLog(buf);delete []buf;return true;//这表示触摸消息是否被处理,若为true则接着往下传,false则不往下传,其他函数则无法捕获}void HelloWorld::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent){CCLog("ccTouchMoved");CCPoint p=pTouch->getLocation();float x=p.x;float y=p.y;char *buf=new char[40];memset(buf,0,10);sprintf(buf,"x=%f,y=%f",x,y);CCLog(buf);delete []buf;}void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent){CCLog("ccTouchEnded");CCPoint p=pTouch->getLocation();float x=p.x;float y=p.y;char *buf=new char[40];memset(buf,0,10);sprintf(buf,"x=%f,y=%f",x,y);CCLog(buf);delete []buf;}void HelloWorld::ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent){CCLog("ccTouchCancelled");CCPoint p=pTouch->getLocation();float x=p.x;float y=p.y;char *buf=new char[40];memset(buf,0,10);sprintf(buf,"x=%f,y=%f",x,y);CCLog(buf);delete []buf;}


在ccTouchMoved方法中,打印鼠标moved的点,相同长度,moved多少点,与FPS和move的速度有关。

 

 

至于播放音乐与音效,先来个示例

CocosDenshion::SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("music.mp3");CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("music.mp3");


一般都要先加载吧。

下面是播放音乐的函数

SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();//停止背景音乐,可以代一个布尔型参数,表示是否释放音乐文件SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();//暂停背景音乐SimpleAudioEngine::sharedEngine()->rewindBackgroundMusic();//重头调用背景音乐SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying()//返回布尔型参数,是否在放着背景音乐SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.5);//设置音量0.0-1.0


还有播放音效的:

preloadEffect( );playEffect();stopEffect();//停止音效,可以选择单独停掉一个音效,通过创建时的m_nSoundId停止stopAllEffects();//停止全部音效pauseEffect(m_nSoundId);//暂停单个音效resumeEffect(m_nSoundId);//重新开始音效pauseAllEffects();//暂停全部音效resumeAllEffects();//重新开始全部音效setEffectsVolume(0.5);//设置音效音量unloadEffect(std::string(CCFileUtils::fullPathFromRelativePath(EFFECT_FILE)).c_str());//卸载音效


 

最后要记住,在程序不需要音乐时,要SimpleAudioEngine::sharedEngine()->end();释放sharedEngine()。

 


热点排行