Ⅰ cocos2d-x怎么暂停音乐
背景音乐播放暂停与继续似乎我们很少使用,事实上也正是如此,背景音乐播放暂停与继续实例代码如下:
SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
它们的调用一般情况下是在游戏退到后台时调用暂停函数resumeBackgroundMusic(),然后在回到前台时候调用继续函数pauseBackgroundMusic()。这些代码应该放在游戏生命周期函数,如下代码所示。
voidAppDelegate::applicationDidEnterBackground() {
Director::getInstance()->stopAnimation();
SimpleAudioEngine::getInstance()->pauseBackgroundMusic(); ①
}
voidAppDelegate::() {
Director::getInstance()->startAnimation();
SimpleAudioEngine::getInstance()->resumeBackgroundMusic(); ②
}
函数applicationDidEnterBackground是在游戏进入到后台时候回调的函数,在该函数中我们往往需要暂停所有的背景音乐播放(见代码第①行)。而在游戏回到前台时候回调,在该函数中我们往往需要继续播放背景音乐(见代码第②行)。
Ⅱ cocos2d 音乐用什么格式好
先用来preloadBackgroundMusic加载一下音乐再试试看,另自外背景音乐请使用mp3格式的。如果还不行的话,很小的可能是你的mp3格式不标准,可以使用转换工具重新进行下转换然后再试试应该就可以解决问题了。还有就是注意音乐所在的位置是否正确。
Ⅲ 用cocos2d,如何播放停止两种不同的背景音乐
既然是用cocos2d,可以用其中的SimpleAudioEngine。如果用SimpleAudioEngine,就不可能运行两种背景路径(版backgroundtrack),但可以通过一些细权微的调整完成循环效应:
1、提供一种a-(int)playEffect:(NSString*)fileloop:(BOOL)loop的方法
在这种方法中,需要找出与控制声音效果有关的ALUInt,借鉴它的工作原理,停止背景音乐。
2、提供a-(void)stopEffectWithHandle:(int)handle的方法,然后将它添加至OpenAL中,阻止音乐继续。
Ⅳ cocos2d播放不了背景音乐,同样的代码和音乐放在另一个项目中却可以
Cocos2d-x3.0
//a static method
Sprite* HelloWorld::maskedSpriteWithSprite(Sprite* textureSprite, Sprite* maskSprite)
{
// 1
RenderTexture * rt = RenderTexture::create( maskSprite->getContentSize().width,
maskSprite->getContentSize().height );
// 2
maskSprite->setPosition(maskSprite->getContentSize().width/2,
maskSprite->getContentSize().height/2);
textureSprite->setPosition(textureSprite->getContentSize().width/2,
textureSprite->getContentSize().height/2);
// 3
maskSprite->setBlendFunc( BlendFunc{GL_ONE, GL_ZERO} );
textureSprite->setBlendFunc( BlendFunc{GL_DST_ALPHA, GL_ZERO} );
// 4
rt->begin();
maskSprite->visit();
textureSprite->visit();
rt->end();
// 5
Sprite *retval = Sprite::createWithTexture(rt->getSprite()->getTexture());
retval->setFlippedY(true);
return retval;
}
..
Ⅳ cocos2d-x播放不了背景音乐
先用preloadBackgroundMusic加载一下音乐再试试看,另外背景音乐请使用mp3格式的。如专果还不行的属话,很小的可能是你的mp3格式不标准,可以使用转换工具重新进行下转换然后再试试应该就可以解决问题了。还有就是注意音乐所在的位置是否正确。
Ⅵ cocos2d-x 黑屏之后 音效 丢失问题
检查AppDelegate::applicationDidEnterBackground 和AppDelegate::两个函数中的操作,第一个是程序进内入后台后的容操作,第二个是程序返回前台后的操作
Ⅶ cocos2dx 中怎么判断音效播放完
SimpleAudioEngine是cocos2d-x播放声音、音效的引擎。像对于背景音乐会提供一个判断当前背景音乐是否播放完毕的接口,但是查了半天,音效并没有提供类似的接口, 大体看了下SimpleAudioEngine.cpp的实现,感觉自己写一个是可以的,所以将代码贴出来,跟大家分享下。
SimpleAudioEngine.h文件中添加以下函数定义:
//判断当前音效是否已经播放完
bool getEffectIsPlaying(unsigned int nSoundId);
SimpleAudioEngine.cpp函数实现,比较简单:
//判断当前音效是否已经播放完
bool SimpleAudioEngine::getEffectIsPlaying(unsigned int
nSoundId)
{
EffectList::iterator p =
sharedList().find(nSoundId);
bool bRet = false;
if (p !=
sharedList().end())
{
bRet =
p->second->IsPlaying();
}
return bRet;
}复制代码
注:修改后将libCocosDenshion类库重新编译一下。只要通过我们的soundid参数,便可找到MciPlayer,这样就好处理了。
Ⅷ 如何解决cocos2dx 在android系统的音效bug
您好,很高兴为您解答:
SimpleAudioEngine是cocos2d-x播放声音、音效的引擎。像对于背景音乐会提供一个判断当前背景音乐是否播放完毕的接口,但是查了半天,音效并没有提供类似的接口, 大体看了下SimpleAudioEngine.cpp的实现,感觉自己写一个是可以的,所以将代码贴出来,跟大家分享下。
SimpleAudioEngine.h文件中添加以下函数定义:
//判断当前音效是否已经播放完
bool getEffectIsPlaying(unsigned int nSoundId);
SimpleAudioEngine.cpp函数实现,比较简单:
//判断当前音效是否已经播放完
bool SimpleAudioEngine::getEffectIsPlaying(unsigned int
nSoundId)
{
EffectList::iterator p =
sharedList().find(nSoundId);
bool bRet = false;
if (p !=
sharedList().end())
{
bRet =
p->second->IsPlaying();
}
return bRet;
}复制代码
注:修改后将libCocosDenshion类库重新编译一下。只要通过我们的soundid参数,便可找到MciPlayer,这样就好处理了。
Ⅸ cocos2d-x 2.2.2怎么播放声音
//GameScene.h
#include "cocos2d.h"
USING_NS_CC;
class GameScene : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene();
virtual bool init();
void menuCallback1(Ref* pSender);
void menuCallback2(Ref* pSender);
CREATE_FUNC(GameScene);
private: //注意不能用auto关键字
Size size;
Sprite *sprite;
};
//GameScene.cpp
#include "GameScene.h"
//声音头文件及命名空间
#include "SimpleAudioEngine.h"
using namespace CocosDenshion;
USING_NS_CC;
//采用宏定义文件名,便于以后统一修改
#define BG_MUSIC "background.mp3"
#define EFFECT_MUSIC "effect1.wav"
cocos2d::Scene* GameScene::createScene()
{
auto scene = Scene::create(); //创建一个场景
auto layer = GameScene::create(); //创建一个图层
scene->addChild(layer);
return scene;
}
//初始化当前的图层
bool GameScene::init()
{
if(!Layer::init()) //初始化父类
return false;
//获取屏幕大小
size = Director::getInstance()->getVisibleSize();
//auto size = Director::getInstance()->getWinSize();
auto item1 = MenuItemFont::create("playBackgroundMusic", CC_CALLBACK_1(GameScene::menuCallback1, this));
item1->setPosition(Vec2(size.width/2, size.height/2));
auto item2 = MenuItemFont::create("playEffect", CC_CALLBACK_1(GameScene::menuCallback2, this));
item2->setPosition(Vec2(size.width/2, size.height*0.4));
auto menu = Menu::create(item1, item2, NULL);
menu->setPosition(Vec2::ZERO);
this->addChild(menu);
//加载音乐和音效文件
SimpleAudioEngine::getInstance()->preloadBackgroundMusic(BG_MUSIC);
SimpleAudioEngine::getInstance()->preloadEffect(EFFECT_MUSIC);
return true;
}
void GameScene::menuCallback1(Ref* pSender)
{
//播放音乐
SimpleAudioEngine::getInstance()->playBackgroundMusic(BG_MUSIC);
}
void GameScene::menuCallback2(Ref* pSender)
{
//播放音效
SimpleAudioEngine::getInstance()->playEffect(EFFECT_MUSIC);
}
Ⅹ Cocos2dx怎么播放ogg音乐文件
你好。
根据你的描述:
没有播放过ogg,播过wav,mp3,mid。不过播放方法都是一样的,你可以参考cocos2d-x 中test的播放音乐的demo