本文整理汇总了C++中KeyframeAnimation::updatePlayState方法的典型用法代码示例。如果您正苦于以下问题:C++ KeyframeAnimation::updatePlayState方法的具体用法?C++ KeyframeAnimation::updatePlayState怎么用?C++ KeyframeAnimation::updatePlayState使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KeyframeAnimation
的用法示例。
在下文中一共展示了KeyframeAnimation::updatePlayState方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: resumeAnimations
void CompositeAnimation::resumeAnimations()
{
if (!m_isSuspended)
return;
m_isSuspended = false;
if (!m_keyframeAnimations.isEmpty()) {
m_keyframeAnimations.checkConsistency();
AnimationNameMap::const_iterator animationsEnd = m_keyframeAnimations.end();
for (AnimationNameMap::const_iterator it = m_keyframeAnimations.begin(); it != animationsEnd; ++it) {
KeyframeAnimation* anim = it->second.get();
if (anim && anim->playStatePlaying())
anim->updatePlayState(true);
}
}
if (!m_transitions.isEmpty()) {
CSSPropertyTransitionsMap::const_iterator transitionsEnd = m_transitions.end();
for (CSSPropertyTransitionsMap::const_iterator it = m_transitions.begin(); it != transitionsEnd; ++it) {
ImplicitAnimation* anim = it->second.get();
if (anim && anim->hasStyle())
anim->updatePlayState(true);
}
}
}
示例2: resumeAnimations
void CompositeAnimation::resumeAnimations()
{
if (!m_suspended)
return;
m_suspended = false;
AnimationNameMap::const_iterator kfend = m_keyframeAnimations.end();
for (AnimationNameMap::const_iterator it = m_keyframeAnimations.begin(); it != kfend; ++it) {
KeyframeAnimation* anim = it->second;
if (anim && anim->playStatePlaying())
anim->updatePlayState(true);
}
CSSPropertyTransitionsMap::const_iterator end = m_transitions.end();
for (CSSPropertyTransitionsMap::const_iterator it = m_transitions.begin(); it != end; ++it) {
ImplicitAnimation* anim = it->second;
if (anim && anim->hasStyle())
anim->updatePlayState(true);
}
}
示例3: updateKeyframeAnimations
void CompositeAnimation::updateKeyframeAnimations(RenderObject* renderer, const RenderStyle* currentStyle, RenderStyle* targetStyle)
{
// Nothing to do if we don't have any animations, and didn't have any before
if (m_keyframeAnimations.isEmpty() && !targetStyle->hasAnimations())
return;
// Nothing to do if the current and target animations are the same
if (currentStyle && currentStyle->hasAnimations() && targetStyle->hasAnimations() && *(currentStyle->animations()) == *(targetStyle->animations()))
return;
int numAnims = 0;
bool animsChanged = false;
// see if the lists match
if (targetStyle->animations()) {
for (size_t i = 0; i < targetStyle->animations()->size(); ++i) {
const Animation* anim = (*targetStyle->animations())[i].get();
if (!anim->isValidAnimation())
animsChanged = true;
else {
AtomicString name(anim->name());
KeyframeAnimation* kfAnim = m_keyframeAnimations.get(name.impl());
if (!kfAnim || !kfAnim->animationsMatch(anim))
animsChanged = true;
else
if (anim) {
// animations match, but play states may differ. update if needed
kfAnim->updatePlayState(anim->playState() == AnimPlayStatePlaying);
// set the saved animation to this new one, just in case the play state has changed
kfAnim->setAnimation(anim);
}
}
++numAnims;
}
}
if (!animsChanged && m_keyframeAnimations.size() != numAnims)
animsChanged = true;
if (!animsChanged)
return;
// animations have changed, update the list
resetAnimations(renderer);
if (!targetStyle->animations())
return;
// add all the new animations
int index = 0;
for (size_t i = 0; i < targetStyle->animations()->size(); ++i) {
const Animation* anim = (*targetStyle->animations())[i].get();
if (!anim->isValidAnimation())
continue;
// don't bother adding the animation if it has no keyframes or won't animate
if ((anim->duration() || anim->delay()) && anim->iterationCount() &&
anim->keyframeList().get() && !anim->keyframeList()->isEmpty()) {
KeyframeAnimation* kfanim = new KeyframeAnimation(const_cast<Animation*>(anim), renderer, index++, this);
m_keyframeAnimations.set(kfanim->name().impl(), kfanim);
}
}
}