本文整理汇总了C++中CompositeAnimation::hasAnimations方法的典型用法代码示例。如果您正苦于以下问题:C++ CompositeAnimation::hasAnimations方法的具体用法?C++ CompositeAnimation::hasAnimations怎么用?C++ CompositeAnimation::hasAnimations使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CompositeAnimation
的用法示例。
在下文中一共展示了CompositeAnimation::hasAnimations方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updateAnimations
void AnimationControllerPrivate::updateAnimations(double& timeToNextService, double& timeToNextEvent, SetNeedsStyleRecalc callSetNeedsStyleRecalc/* = DoNotCallSetNeedsStyleRecalc*/)
{
double minTimeToNextService = -1;
double minTimeToNextEvent = -1;
bool updateStyleNeeded = false;
RenderObjectAnimationMap::const_iterator animationsEnd = m_compositeAnimations.end();
for (RenderObjectAnimationMap::const_iterator it = m_compositeAnimations.begin(); it != animationsEnd; ++it) {
CompositeAnimation* compAnim = it->value.get();
if (compAnim->hasAnimations()) {
double t = compAnim->timeToNextService();
if (t != -1 && (t < minTimeToNextService || minTimeToNextService == -1))
minTimeToNextService = t;
double nextEvent = compAnim->timeToNextEvent();
if (nextEvent != -1 && (nextEvent < minTimeToNextEvent || minTimeToNextEvent == -1))
minTimeToNextEvent = nextEvent;
if (callSetNeedsStyleRecalc == CallSetNeedsStyleRecalc) {
if (!t) {
Node* node = it->key->node();
node->setNeedsStyleRecalc(LocalStyleChange, StyleChangeFromRenderer);
updateStyleNeeded = true;
}
} else if (!minTimeToNextService && !minTimeToNextEvent) {
// Found the minimum values and do not need to mark for style recalc.
break;
}
}
}
if (updateStyleNeeded)
m_frame->document()->updateStyleIfNeeded();
timeToNextService = minTimeToNextService;
timeToNextEvent = minTimeToNextEvent;
}
示例2: updateAnimationTimer
void AnimationControllerPrivate::updateAnimationTimer(bool callSetChanged/* = false*/)
{
double needsService = -1;
bool calledSetChanged = false;
RenderObjectAnimationMap::const_iterator animationsEnd = m_compositeAnimations.end();
for (RenderObjectAnimationMap::const_iterator it = m_compositeAnimations.begin(); it != animationsEnd; ++it) {
CompositeAnimation* compAnim = it->second.get();
if (!compAnim->suspended() && compAnim->hasAnimations()) {
double t = compAnim->timeToNextService();
if (t != -1 && (t < needsService || needsService == -1))
needsService = t;
if (needsService == 0) {
if (callSetChanged) {
Node* node = it->first->node();
ASSERT(!node || (node->document() && !node->document()->inPageCache()));
node->setNeedsStyleRecalc(SyntheticStyleChange);
calledSetChanged = true;
}
else
break;
}
}
}
if (calledSetChanged)
m_frame->document()->updateStyleIfNeeded();
// If we want service immediately, we start a repeating timer to reduce the overhead of starting
if (needsService == 0) {
if (!m_animationTimer.isActive() || m_animationTimer.repeatInterval() == 0)
m_animationTimer.startRepeating(cAnimationTimerDelay);
return;
}
// If we don't need service, we want to make sure the timer is no longer running
if (needsService < 0) {
if (m_animationTimer.isActive())
m_animationTimer.stop();
return;
}
// Otherwise, we want to start a one-shot timer so we get here again
if (m_animationTimer.isActive())
m_animationTimer.stop();
m_animationTimer.startOneShot(needsService);
}