《Cocos2d-x游戏开发实战精解》学习笔记4--实战一个简单的钢琴

《Cocos2d-x游戏开发实战精解》学习笔记4--实战一个简单的钢琴,第1张

概述上一节学习了使用Cocos2d-x播放音乐的方法,但是那种方法一般只适合于播放较大的音乐,而一般比较短小的音乐(如游戏中的打斗、按键音效等)则要通过playEffect来播放。本节使用该方法以及之前学到的菜单按钮的用法,制作了一个简单的“钢琴”游戏,其中部分代码如范例3-8所示,完整代码详见源文件本章目录下的ChapterThree06项目。 【范例3-8 利用Cocos2d-x实现简单的钢琴】

上一节学习了使用Cocos2d-x播放音乐的方法,但是那种方法一般只适合于播放较大的音乐,而一般比较短小的音乐(如游戏中的打斗、按键音效等)则要通过playEffect来播放。本节使用该方法以及之前学到的菜单按钮的用法,制作了一个简单的“钢琴”游戏,其中部分代码如范例3-8所示,完整代码详见源文件本章目录下的ChapterThree06项目。

【范例3-8 利用Cocos2d-x实现简单的钢琴】

#include "HelloWorldScene.h"#include "SimpleAudioEngine.h"                       //用于播放音乐USING_NS_CC;Scene* HelloWorld::createScene(){    auto scene = Scene::create();    auto layer = HelloWorld::create();    scene->addChild(layer);    return scene;}bool HelloWorld::init(){    if ( !Layer::init() )    {        return false;    }       for (int i = 1; i <= 7; i++) //预加载7个音符的mp3文件       {              CocosDenshion::SimpleAudioEngine::sharedEngine()->preloadEffect(                                              String::createWithFormat("%d.mp3",i)->getCString());       }       //通过按钮,创建7个琴键       auto* pbutton1 = MenuItemImage::create("button1.png","button2.png",this,menu_selector(HelloWorld::note1));       auto* button1 = Menu::create(pbutton1,NulL);       button1->setposition(50,180);   //设置按钮位置       addChild(button1);       /**此处省略了其他5个按钮的创建过程**/       auto* pbutton7 = MenuItemImage::create("button1.png",menu_selector(HelloWorld::note7));       auto* button7 = Menu::create(pbutton7,NulL);       button7->setposition(50 + 90 * 6,180); //按钮x坐标为 50+90*i其中i为按键编号减1       addChild(button7);    return true;}//第一个按键的响应 *** 作,播放第1个音符voID HelloWorld::note1(Cocos2d::Object* pSender){       CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("1.mp3");}//此处省略了其他5个音符的响应 *** 作voID HelloWorld::note7(Cocos2d::Object* pSender){       CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("7.mp3");}

运行之后的界面如图3-13所示。当用户点击按键时按键将发生变化,并播放对应音符的声音效果。

图3-13 “钢琴”界面

图3-14 点击屏幕中的按键将播放音乐

播放这类较短音乐的方法与之前介绍的playBackgroundMusic方法是完全相同的,只不过要将方法名全部改为playEffect就可以了。

此外,由于这类音乐是要反复播放的,比如在钢琴中某个音符是要反复被播放的,而游戏中某些怪物的叫声也是要反复出现的。如果每次要调用playEffect时都会重新对音乐文件进行加载,这就造成了资源浪费,因此可以在场景初始化的时候对这些文件进行一个统一的预加载,如范例第17~22行所示。

提示:实际上在使用playBackgroundMusic方法时也需要对音乐进行预加载,只不过在之前的范例中被简化了。另外实际开发中还需要在程序退出时释放加载了的音乐,释放的方法为unloadEffect。

《Cocos2d-x游戏开发实战精解》学习笔记1--在Cocos2d中显示图像
《Cocos2d-x游戏开发实战精解》学习笔记2--在Cocos2d-x中显示一行文字
《Cocos2d-x游戏开发实战精解》学习笔记3--在Cocos2d-x中播放声音

总结

以上是内存溢出为你收集整理的《Cocos2d-x游戏开发实战精解》学习笔记4--实战一个简单的钢琴全部内容,希望文章能够帮你解决《Cocos2d-x游戏开发实战精解》学习笔记4--实战一个简单的钢琴所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1078006.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存