自学cocos2d cocos2d x游戏开发发应该按什么步骤进行

自学 cocos2d 游戏开发应该按什么步骤进行? - 知乎3741被浏览190177分享邀请回答98 条评论分享收藏感谢收起& & 上一节学习了使用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);
bool HelloWorld::init()
if ( !Layer::init() )
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&,
menu_selector(HelloWorld::note1));
auto* button1 = Menu::create(pButton1, NULL);
button1-&setPosition(50, 180);
//设置按钮位置
addChild(button1);
/**此处省略了其他5个按钮的创建过程**/
auto* pButton7 = MenuItemImage::create(&button1.png&,
&button2.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);
//第一个按键的响应操作,播放第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。
自学必备!!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:7097次
排名:千里之外
原创:12篇
(1)(4)(1)(1)(5)(5)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 cocos2d js游戏开发 的文章

 

随机推荐