cocos2d-x 3.3 之卡牌设计 NO.5 设置界面(透明层和屏蔽下层触控
发布时间:2020-12-14 21:39:14 所属栏目:百科 来源:网络整理
导读:经过一段时间奋战,卡牌游戏总算完成的差不多,本想着做出一个效果就写一篇博文,但是不知不觉中已经有那么多坑没有填了 暑假加紧学习,最后再写一个游戏 先来看看所谓的设置界面是什么样的: 一、由于我的设置界面全都是控制声音的,所以先说说2dx的声音引擎
经过一段时间奋战,卡牌游戏总算完成的差不多,本想着做出一个效果就写一篇博文,但是不知不觉中已经有那么多坑没有填了 暑假加紧学习,最后再写一个游戏
一、由于我的设置界面全都是控制声音的,所以先说说2dx的声音引擎: 1.首先应该包括头文件 #include "SimpleAudioEngine.h"
CocosDenshion::SimpleAudioEngine::getInstance()->preloadBackgroundMusic("sound/bgm/bgm_game.mp3");//背景音乐 CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("sound/effect/button_out.mp3");//音效这样做跟预先加载纹理差不多,但是好处更加明显,如果不预先加载可能还会遇上BUG。
3.PLAY SOUND //-------------------------------------------------------------播放背景音乐 CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("sound/bgm/bgm_game.mp3",true); <pre name="code" class="cpp">//-------------------------------------------------------------播放背景音效if(isPlayEffect){CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("sound/effect/equip_out.mp3"); } 好了,这样音乐就能正常播放了,另外关于声音2dx还给我们提供了很多其他函数,这里就不多说了~
二、 1.新建一个setting类,与其他Layer一样,只需做如下一些改变 1)透明背景,我用了一个很LOW的方法,就是直接画了张与游戏界面大小一样的透明PNG,当背景图贴上去就好 2)按钮: void Setting::menuCallback(Ref* pSender) { MenuItem* nowItem=(MenuItem *)pSender; switch (nowItem->getTag()) { case 15://确定按钮 this->removeFromParentAndCleanup(true);//返回游戏界面 break; case 16://背景音乐按钮 if(CocosDenshion::SimpleAudioEngine::getInstance()->isBackgroundMusicPlaying()) { CocosDenshion::SimpleAudioEngine::getInstance()->stopBackgroundMusic(); } else { CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("sound/bgm/bgm_game.mp3",true); } break; case 17://音效按钮 isPlayEffect=!isPlayEffect; break; default: break; } } 2.在游戏类里加载此场景: Setting* setting = Setting::create(); this->addChild(setting,100); 3.屏蔽下层触控: 在setting的init函数里注册鼠标监听: //-------------------------------------------------------------添加鼠标监听 EventListenerTouchOneByOne * listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true);//这个很重要,阻止了触摸向下传递 listener->onTouchBegan = CC_CALLBACK_2(Setting::onTouchBegan,this); listener->onTouchMoved = CC_CALLBACK_2(Setting::onTouchMoved,this); listener->onTouchEnded = CC_CALLBACK_2(Setting::onTouchEnded,this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |