【Cocos2d-x游戏引擎开发笔记(6)】触屏事件与多媒体 (转)
来源:互联网 发布:linux中竖线 命令 编辑:程序博客网 时间:2024/06/15 03:24
转载 :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);//全部置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()。
- 【Cocos2d-x游戏引擎开发笔记(6)】触屏事件与多媒体 (转)
- 【Cocos2d-x游戏引擎开发笔记(6)】触屏事件与多媒体
- 【Cocos2d-x游戏引擎开发笔记(6)】触屏事件与多媒体
- 【Cocos2d-x游戏引擎开发笔记】定时器
- 【Cocos2d-x游戏引擎开发笔记(9)】实现DotA的技能冷却效果(转)
- 《iOS游戏编程之从零开始—Cocos2d-x与cocos2d引擎游戏开发(配光盘)》
- Cocos2d-x游戏引擎开发[6]---定时器(Schedule)
- 【Cocos2d-x游戏引擎开发笔记(12)】粒子系统实现与用户交互的特效
- Cocos2d-x游戏引擎开发笔记(12)】粒子系统实现与用户交互的特效
- 【Cocos2d-x游戏引擎开发笔记(12)】粒子系统实现与用户交互的特效
- 【Cocos2d-x游戏引擎开发笔记(1)】HelloWorld
- 【Cocos2d-x游戏引擎开发笔记(4)】系统动画
- 【Cocos2d-x游戏引擎开发笔记(5)】自定义动画
- 【Cocos2d-x游戏引擎开发笔记(7)】定时器
- 【Cocos2d-x游戏引擎开发笔记(18)】图形绘制
- 【Cocos2d-x游戏引擎开发笔记(20)】SQLite专题
- 【Cocos2d-x游戏引擎开发笔记(21)】CCHttpRequest联网
- 【Cocos2d-x游戏引擎开发笔记(22)】TexturePacker的使用
- Windows下ORACLE 10g安装与操作图解
- cocos2d-x场景中的层(CCLayer)及其触摸消息响应(转)
- VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
- STM8 块操作
- MonetDB中文资料
- 【Cocos2d-x游戏引擎开发笔记(6)】触屏事件与多媒体 (转)
- Oracle执行计划详解
- 常见MFC UI界面库
- ListView实现自动滚动
- 三星首届全球开发者大会举行 发布5款工具包
- ext2.0中EditorGridPanel (8)
- 字符串倒序 单词次序不变----
- 算法习题33:字符串匹配(和谐文字)
- javascript 仿百度分页函数