【cocos2dx学习笔记】单点触摸和音乐播放
来源:互联网 发布:网络购物的流程 编辑:程序博客网 时间:2024/05/17 21:56
从http://blog.csdn.net/zhy_cheng/article/details/8273435转载
Cocos2d-x要实现触屏事件,首先覆盖父类的onEnter函数,在这个函数中设置触屏事件。
void HelloWorld::onEnter() { CCLog("onEnter"); CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate( this,//在那个类中实现触屏回调函数 0, //优先级 true);//触摸时间是否被该目标截获 }
这表示进入布景后就注册触屏事件
然后覆盖触屏的回调函数
<span><span class="keyword">virtual</span><span> </span><span class="datatypes">bool</span><span> ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); </span></span><span><span class="keyword">virtual</span><span> </span><span class="keyword">void</span><span> ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent); </span></span><span><span></span></span><span><span class="keyword">virtual</span><span> </span><span class="keyword">void</span><span> ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent); </span></span><span></span><span><span class="keyword">virtual</span><span> </span><span class="keyword">void</span><span> ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent); </span></span>
在回调函数中,打印触摸的点
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);//全部置0 sprintf(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()。
0 0
- 【cocos2dx学习笔记】单点触摸和音乐播放
- 关于cocos2dx多点触摸和单点触摸
- cocos2dx 单点触摸,按钮事件
- cocos2dx之播放音乐
- cocos2dx播放音乐
- cocos2dx 播放音乐
- Cocos2dx 学习笔记31 cocos2dx 播放gif
- iOS学习笔记之故事版和音乐播放等
- cocos2dx学习之路----第八篇(初识触摸机制中的单点触摸)
- cocos2dx 单点触摸的简单使用
- cocos2dx 玩转音乐播放
- Quick cocos2dx-Lua(V3.3R1)学习笔记(8) ---- 事件篇之单点触摸事件,让我们用精灵模仿一个按钮吧
- SDL学习笔记五(音乐播放)
- Android学习笔记——播放音乐
- cocos2dx学习之路----第九篇(深入理解单点触摸的事件机制)
- 学习笔记--cocos2dx-3.0中LabelTTF添加触摸监听事件
- cocos2dx 3.3 + lua 学习笔记(03)--- 触摸事件、定时器、进度条
- android学习笔记---43_音乐播放器,音频采集,音乐播放,使用SoundPool播放音效
- 防止头文件被重复包含,嵌套包含
- 正则表达式基础应用(匹配matches(regex))
- C++之const在类用法小结
- Java基础回顾(6)
- 设计模式总结(一)
- 【cocos2dx学习笔记】单点触摸和音乐播放
- c++中派生类的构造函数
- 珍惜现在
- 大话数据结构-时间复杂度,线性表,栈,队列
- 123
- 机器学习7-SVM
- 从Clarifai的估值聊聊深度学习
- FreeRTOS学习笔记——创建任务
- QtWebKit初接触