问题描述
void GameManager::pushMenuState()
{
states.push_back(std::move(std::make_unique<MenuState>(window)));//std::make_unique<MenuState>(window)
}
void GameManager::pushPlayState()
{
states.push_back(std::move(std::make_unique<PlayState>(window)));//std::make_unique<PlayState>(window)
}
/*-------------------------------------------------*/
void GameManager::popState()
{
states.erase(states.begin());
}
////////////////////////////////////////////////////
void GameManager::Update()
{
while(window->isopen())
{
if(sf::Keyboard::isKeypressed(sf::Keyboard::D))
{
isMenu=false;
}
if(sf::Keyboard::isKeypressed(sf::Keyboard::S))
{
isMenu=true;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
if(isMenu)
{
if(states.empty())
pushMenuState();
else if(states.size()<=1&&states.front()->getStateType()!=State::MENU)
pushMenuState();
if(states.size()>1&&states.front()->getStateType()!=State::MENU)
popState();
states.back()->Update(window);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
else
{
if(states.empty())
pushPlayState();
else if(states.size()<=1&&states.front()->getStateType()!=State::PLAY)
pushPlayState();
if(states.size()>1&&states.front()->getStateType()!=State::PLAY)
popState();
states.back()->Update(window);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
}
}
这是我的代码。首先,我处于菜单状态。我按“ D”键切换到播放状态。这是工作。但是,当我想再次进入菜单状态时,我按下了“ S”,命令提示符出现错误,错误不是来自IDE:
错误说明: AL_INVALID_OPERATION 当前状态不允许执行指定的操作。
内部OpenAL调用在SoundStream.cpp(317)中失败。 表达: alSourcePlay(m_source) 错误说明: AL_INVALID_OPERATION 当前状态不允许执行指定的操作。
内部OpenAL调用在SoundStream.cpp(329)中失败。 表达: alGetSourcei(m_source,AL_BUFFERS_PROCESSED和&nbProcessed) 错误说明: AL_INVALID_OPERATION 当前状态不允许执行指定的操作。
内部OpenAL调用在SoundSource.cpp(196)中失败。 表达: alGetSourcei(m_source,AL_SOURCE_STATE和&status) 错误说明: AL_INVALID_OPERATION 当前状态不允许执行指定的操作。
内部OpenAL调用在SoundSource.cpp(196)中失败。 表达: alGetSourcei(m_source,AL_SOURCE_STATE和&status) 错误说明: AL_INVALID_OPERATION 当前状态不允许执行指定的操作。
内部OpenAL调用在SoundStream.cpp(317)中失败。 表达: alSourcePlay(m_source) 错误说明: AL_INVALID_OPERATION 当前状态不允许执行指定的操作。
内部OpenAL调用在SoundStream.cpp(329)中失败。 表达: alGetSourcei(m_source,AL_BUFFERS_PROCESSED和&nbProcessed) 错误说明: AL_INVALID_OPERATION 当前状态不允许执行指定的操作。
内部OpenAL调用在SoundSource.cpp(196)中失败。 表达: alGetSourcei(m_source,AL_SOURCE_STATE和&status) 错误说明: AL_INVALID_OPERATION 当前状态不允许执行指定的操作。
内部OpenAL调用在SoundSource.cpp(196)中失败。 表达: alGetSourcei(m_source,AL_SOURCE_STATE和&status) 错误 进程返回-1073741819(0xC0000005)执行时间:4.611 s 按任意键继续。
为什么我明白了?推送状态有什么问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)