虚幻引擎官网Loading动画如何实现点击暂停效果?

来源:Nodejs社区作者:小师妹头衔:草根站长
导读:本期聚焦于小伙伴创作的《虚幻引擎官网Loading动画如何实现点击暂停效果?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《虚幻引擎官网Loading动画如何实现点击暂停效果?》有用,将其分享出去将是对创作者最好的鼓励。

虚幻引擎官网的Loading动画具备流畅的动态效果,同时支持点击暂停的交互,这种实现方式既提升了视觉效果,也增加了用户的可控性。下面我们一步步拆解实现逻辑。

虚幻引擎官网Loading动画如何实现点击暂停效果?

一、基础Loading动画的CSS实现

首先我们需要先完成基础的旋转Loading动画,这里使用常见的圆环旋转效果,通过@keyframes定义旋转关键帧,再通过animation属性绑定到元素上。

/* 定义旋转动画关键帧 */
@keyframes rotate_loading {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

/* 基础Loading容器样式 */
.loading_container {
  width: 80px;
  height: 80px;
  border: 8px solid #f3f3f3;
  border-top: 8px solid #3498db;
  border-radius: 50%;
  /* 绑定旋转动画,持续1秒,无限循环,线性运动 */
  animation: rotate_loading 1s linear infinite;
  cursor: pointer;
}

/* 暂停状态的样式 */
.loading_paused {
  /* 暂停动画运行 */
  animation-play-state: paused;
}

二、HTML结构搭建

HTML部分只需要一个用于展示Loading动画的容器元素即可,后续通过JavaScript操作这个元素的状态。

<div class="loading_container" id="loadingBox"></div>

三、JavaScript点击暂停逻辑实现

核心的交互逻辑是通过JavaScript监听容器的点击事件,切换元素的animation-play-state状态,同时用一个状态变量记录当前的动画运行状态,避免重复切换。

// 获取Loading容器元素
const loadingBox = document.getElementById('loadingBox');
// 定义状态标记,true表示正在运行,false表示已暂停
let isRunning = true;

// 监听点击事件
loadingBox.addEventListener('click', function() {
  if (isRunning) {
    // 当前正在运行,点击后暂停
    loadingBox.classList.add('loading_paused');
    isRunning = false;
  } else {
    // 当前已暂停,点击后恢复运行
    loadingBox.classList.remove('loading_paused');
    isRunning = true;
  }
});

四、效果验证与扩展

完成上述代码后,在浏览器中打开页面,可以看到圆环持续旋转,点击圆环后动画暂停,再次点击动画恢复运行,和虚幻引擎官网的点击暂停效果逻辑一致。

如果需要实现更复杂的动画暂停效果,比如暂停时显示进度提示,可以在loading_paused样式中添加额外的样式规则,或者在点击事件中添加对应的DOM操作逻辑,比如显示暂停提示文本。

注意:animation-play-state属性兼容性较好,主流现代浏览器都支持,如果需要适配更老的浏览器版本,可以通过切换animation属性值为none来实现暂停效果,但这种方式会重置动画进度,需要根据实际需求选择。

扩展:重置动画进度的方法

如果需要在暂停后重置动画到初始状态,可以通过重新设置animation属性实现,示例代码如下:

// 重置动画到初始状态
function resetLoading() {
  // 先移除动画绑定
  loadingBox.style.animation = 'none';
  // 触发重排,让样式生效
  loadingBox.offsetHeight;
  // 重新绑定动画
  loadingBox.style.animation = 'rotate_loading 1s linear infinite';
  // 恢复运行状态标记
  isRunning = true;
  // 移除暂停样式
  loadingBox.classList.remove('loading_paused');
}

Unreal_EngineLoading_animationclick_pauseJavaScriptCSS_animation修改时间:2026-07-17 12:51:21

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。