转载 :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);
- sprintf(buf,"x=%f,y=%f",x,y);
- CCLog(buf);
- delete []buf;
- return true;
- }
- 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);
还有播放音效的:
- preloadEffect( );
- playEffect();
- stopEffect();
-
- 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()。