可能是bug,cocos2d-x 2.2.3&…

void MciPlayer::Close()
{
    if (m_bPlaying)
    {
        Stop();
    }
    if (m_hDev)
    {
          _SendGenericCommand(MCI_CLOSE);
    }
    m_hDev = 0;
    m_bPlaying = false;
}

void MciPlayer::Pause()
{
    _SendGenericCommand(MCI_PAUSE);
m_bPlaying = false;
}

void MciPlayer::Resume()
{
    _SendGenericCommand(MCI_RESUME);
m_bPlaying = true;                     //原引擎每次执行重播的时候没有设置新的音乐状态,在此增加一句即可
//可能在重播时会判断当前是否载入音频,返回相关错误信息;但是目前的代码很明显没有对错误信息进行处理,无法监控是否成功重播,简单地设置不能解决根本问题,只是为了给自己用方便。要改的还是要在_SendGenericCommand 中增加返回信息,或者重写Resume()函数
}

void MciPlayer::Stop()
{
    _SendGenericCommand(MCI_STOP);
    m_bPlaying = false;
}


发这种博文本身没有多少技术含量,仅仅是为了说明我的努力方向,希望找到志同道合的朋友


void SimpleAudioEngine::preloadEffect(const char* pszFilePath)
{
    int nRet = 0;
    do 
    {
        BREAK_IF(! pszFilePath);

        nRet = _Hash(pszFilePath);

        BREAK_IF(sharedList().end() != sharedList().find(nRet));

        sharedList().insert(Effect(nRet, new MciPlayer()));
        MciPlayer * pPlayer = sharedList()[nRet];
        pPlayer->Open(_FullPath(pszFilePath).c_str(), nRet);

        BREAK_IF(nRet == pPlayer->GetSoundID());

        delete pPlayer;
        sharedList().erase(nRet);
        nRet = 0;
    } while (0);
}

void SimpleAudioEngine::pauseEffect(unsigned int nSoundId)
{
    EffectList::iterator p = sharedList().find(nSoundId);
    if (p != sharedList().end())
    {
        p->second->Pause();
    }
}

void SimpleAudioEngine::pauseAllEffects()
{
    EffectList::iterator iter;
    for (iter = sharedList().begin(); iter != sharedList().end(); iter++)
    {
        iter->second->Pause();
    }
}

void SimpleAudioEngine::resumeEffect(unsigned int nSoundId)
{
    EffectList::iterator p = sharedList().find(nSoundId);
    if (p != sharedList().end())
    {
        p->second->Resume();
    }
}

void SimpleAudioEngine::resumeAllEffects()
{
    EffectList::iterator iter;
    for (iter = sharedList().begin(); iter != sharedList().end(); iter++)
    {
        iter->second->Resume();
    }
}

void SimpleAudioEngine::stopAllEffects()
{
    EffectList::iterator iter;
    for (iter = sharedList().begin(); iter != sharedList().end(); iter++)
    {
        iter->second->Stop();
    }
}

void SimpleAudioEngine::preloadBackgroundMusic(const char* pszFilePath)
{

}

void SimpleAudioEngine::unloadEffect(const char* pszFilePath)
{
    unsigned int nID = _Hash(pszFilePath);

    EffectList::iterator p = sharedList().find(nID);
    if (p != sharedList().end())
    {
        delete p->second;
        p->second = NULL;
        sharedList().erase(nID);
    }    
}

这里的代码有些奇怪,为什么背景音乐的预加载是空实现,目前是2.2.3正式,也是很多游戏项目目前正在使用的版本。各种人为的错误在这个引擎中出现,已经不是第一次发现这种情况啦。还记得大概三个月前,触控公司对不满6亿的ipo估值时发表声明称cocos2dx就价值10亿。触控忘记开源协议了,cocos2d-iphone的东西改了一些也不会有版权的。从一开始就是别人的东西,即便现在更名cocos,他也是隶属于大家的而非触控所有。王哲是项目的主管人没错,但这软件的原作者不是他,所有权不是他的,也不是触控的,他只有管理权,没有所有权。cocos的上层自私的思维将导致cocos永远无法企及linux这些开源项目。linux是受大家推崇才如此命名的,本来是个完全个人代码,大部分是原创的,而不是从OC改成C++

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值