本文整理汇总了C++中CAction::GetHoldTime方法的典型用法代码示例。如果您正苦于以下问题:C++ CAction::GetHoldTime方法的具体用法?C++ CAction::GetHoldTime怎么用?C++ CAction::GetHoldTime使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CAction
的用法示例。
在下文中一共展示了CAction::GetHoldTime方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnAction
bool CGUIWindowHome::OnAction(const CAction &action)
{
static unsigned int min_hold_time = 1000;
if (action.GetID() == ACTION_NAV_BACK &&
action.GetHoldTime() < min_hold_time &&
g_application.IsPlaying())
{
g_application.SwitchToFullScreen();
return true;
}
return CGUIWindow::OnAction(action);
}
示例2: OnAction
bool CInputManager::OnAction(const CAction& action)
{
if (action.GetID() != ACTION_NONE)
{
if (action.IsAnalog())
{
QueueAction(action);
}
else
{
// If button was pressed this frame, send action
if (action.GetHoldTime() == 0)
{
QueueAction(action);
}
else
{
// Only send repeated actions for basic navigation commands
bool bIsNavigation = false;
switch (action.GetID())
{
case ACTION_MOVE_LEFT:
case ACTION_MOVE_RIGHT:
case ACTION_MOVE_UP:
case ACTION_MOVE_DOWN:
case ACTION_PAGE_UP:
case ACTION_PAGE_DOWN:
bIsNavigation = true;
break;
default:
break;
}
if (bIsNavigation)
QueueAction(action);
}
}
return true;
}
return false;
}
示例3: ExecuteInputAction
bool CInputManager::ExecuteInputAction(const CAction &action)
{
bool bResult = false;
// play sound before the action unless the button is held,
// where we execute after the action as held actions aren't fired every time.
if (action.GetHoldTime())
{
bResult = g_application.OnAction(action);
if (bResult)
g_audioManager.PlayActionSound(action);
}
else
{
g_audioManager.PlayActionSound(action);
bResult = g_application.OnAction(action);
}
return bResult;
}
示例4: OnAction
bool CGUIBaseContainer::OnAction(const CAction &action)
{
if (action.GetID() >= KEY_ASCII)
{
OnJumpLetter((char)(action.GetID() & 0xff));
return true;
}
// stop the timer on any other action
m_matchTimer.Stop();
switch (action.GetID())
{
case ACTION_MOVE_LEFT:
case ACTION_MOVE_RIGHT:
case ACTION_MOVE_DOWN:
case ACTION_MOVE_UP:
case ACTION_NAV_BACK:
case ACTION_PREVIOUS_MENU:
{
if (!HasFocus()) return false;
if (action.GetHoldTime() > HOLD_TIME_START &&
((m_orientation == VERTICAL && (action.GetID() == ACTION_MOVE_UP || action.GetID() == ACTION_MOVE_DOWN)) ||
(m_orientation == HORIZONTAL && (action.GetID() == ACTION_MOVE_LEFT || action.GetID() == ACTION_MOVE_RIGHT))))
{ // action is held down - repeat a number of times
float speed = std::min(1.0f, (float)(action.GetHoldTime() - HOLD_TIME_START) / (HOLD_TIME_END - HOLD_TIME_START));
unsigned int frameDuration = std::min(CTimeUtils::GetFrameTime() - m_lastHoldTime, 50u); // max 20fps
// maximal scroll rate is at least 30 items per second, and at most (item_rows/7) items per second
// i.e. timed to take 7 seconds to traverse the list at full speed.
// minimal scroll rate is at least 10 items per second
float maxSpeed = std::max(frameDuration * 0.001f * 30, frameDuration * 0.001f * GetRows() / 7);
float minSpeed = frameDuration * 0.001f * 10;
m_scrollItemsPerFrame += std::max(minSpeed, speed*maxSpeed); // accelerate to max speed
m_lastHoldTime = CTimeUtils::GetFrameTime();
if(m_scrollItemsPerFrame < 1.0f)//not enough hold time accumulated for one step
return true;
while (m_scrollItemsPerFrame >= 1)
{
if (action.GetID() == ACTION_MOVE_LEFT || action.GetID() == ACTION_MOVE_UP)
MoveUp(false);
else
MoveDown(false);
m_scrollItemsPerFrame--;
}
return true;
}
else
{
//if HOLD_TIME_START is reached we need
//a sane initial value for calculating m_scrollItemsPerPage
m_lastHoldTime = CTimeUtils::GetFrameTime();
m_scrollItemsPerFrame = 0.0f;
return CGUIControl::OnAction(action);
}
}
break;
case ACTION_FIRST_PAGE:
SelectItem(0);
return true;
case ACTION_LAST_PAGE:
if (m_items.size())
SelectItem(m_items.size() - 1);
return true;
case ACTION_NEXT_LETTER:
{
OnNextLetter();
return true;
}
break;
case ACTION_PREV_LETTER:
{
OnPrevLetter();
return true;
}
break;
case ACTION_JUMP_SMS2:
case ACTION_JUMP_SMS3:
case ACTION_JUMP_SMS4:
case ACTION_JUMP_SMS5:
case ACTION_JUMP_SMS6:
case ACTION_JUMP_SMS7:
case ACTION_JUMP_SMS8:
case ACTION_JUMP_SMS9:
{
OnJumpSMS(action.GetID() - ACTION_JUMP_SMS2 + 2);
return true;
}
break;
default:
if (action.GetID())
{
return OnClick(action.GetID());
}
//.........这里部分代码省略.........
示例5: OnAction
bool CGUIBaseContainer::OnAction(const CAction &action)
{
if (action.GetID() >= KEY_ASCII)
{
OnJumpLetter((char)(action.GetID() & 0xff));
return true;
}
switch (action.GetID())
{
case ACTION_MOVE_LEFT:
case ACTION_MOVE_RIGHT:
case ACTION_MOVE_DOWN:
case ACTION_MOVE_UP:
case ACTION_NAV_BACK:
{
if (!HasFocus()) return false;
if (action.GetHoldTime() > HOLD_TIME_START &&
((m_orientation == VERTICAL && (action.GetID() == ACTION_MOVE_UP || action.GetID() == ACTION_MOVE_DOWN)) ||
(m_orientation == HORIZONTAL && (action.GetID() == ACTION_MOVE_LEFT || action.GetID() == ACTION_MOVE_RIGHT))))
{ // action is held down - repeat a number of times
float speed = std::min(1.0f, (float)(action.GetHoldTime() - HOLD_TIME_START) / (HOLD_TIME_END - HOLD_TIME_START));
unsigned int frameDuration = CTimeUtils::GetFrameTime() - m_lastHoldTime;
//scrollrate is minimum 4 items/sec and max rows/10 items/sec
m_scrollItemsPerFrame += std::max(0.004f*(float)frameDuration, (float)(speed * 0.0001f * GetRows() * frameDuration));
m_lastHoldTime = CTimeUtils::GetFrameTime();
if(m_scrollItemsPerFrame < 1.0f)//not enough hold time accumulated for one step
return false;
if (action.GetID() == ACTION_MOVE_LEFT || action.GetID() == ACTION_MOVE_UP)
while (m_scrollItemsPerFrame-- >= 1) MoveUp(false);
else
while (m_scrollItemsPerFrame-- >= 1) MoveDown(false);
return true;
}
else
{
//if HOLD_TIME_START is reached we need
//a sane initial value for calculating m_scrollItemsPerPage
m_lastHoldTime = CTimeUtils::GetFrameTime();
m_scrollItemsPerFrame = 0.0f;
return CGUIControl::OnAction(action);
}
}
break;
case ACTION_FIRST_PAGE:
SelectItem(0);
return true;
case ACTION_LAST_PAGE:
if (m_items.size())
SelectItem(m_items.size() - 1);
return true;
case ACTION_NEXT_LETTER:
{
OnNextLetter();
return true;
}
break;
case ACTION_PREV_LETTER:
{
OnPrevLetter();
return true;
}
break;
case ACTION_JUMP_SMS2:
case ACTION_JUMP_SMS3:
case ACTION_JUMP_SMS4:
case ACTION_JUMP_SMS5:
case ACTION_JUMP_SMS6:
case ACTION_JUMP_SMS7:
case ACTION_JUMP_SMS8:
case ACTION_JUMP_SMS9:
{
OnJumpSMS(action.GetID() - ACTION_JUMP_SMS2 + 2);
return true;
}
break;
default:
if (action.GetID())
{
return OnClick(action.GetID());
}
}
return false;
}