尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Ruffle:用 Rust 重写、免插件播放 SWF 的 Flash Player
Ruffle用 Rust 重写、免插件播放 SWF 的 Flash Player【免费下载链接】ruffleA Flash Player emulator written in Rust项目地址: https://gitcode.com/GitHub_Trending/ru/ruffle硬盘里那批二十年前的 SWF 游戏自 2020 年 Flash Player 退役后就失去了打开它们的工具。Ruffle 是一个用 Rust 编写的 Flash Player 模拟器桌面版是一个独立应用把 SWF 文件拖进窗口就能播放不需要浏览器不需要插件。SWF 的旧运行方式Ruffle 换了一种Flash 内容过去的运行方式是往系统或浏览器里装一个插件插件是经典的安全攻击面停止维护后漏洞无人修复而浏览器厂商随后也撤掉了加载插件的接口。文件本身没坏缺的只是一个执行环境。Ruffle 把 SWF 当成一个应当解析的文件格式用 Rust 重写了解析、ActionScript 3.0 虚拟机和渲染管线产物是一个普通桌面程序SWF 从打不开变成可以拖放、可以双击、可以作为命令行参数传给它。拖入 SWF 之后发生了什么文件拖放的入口在 desktop/src/app.rswinit 报告DroppedFile事件处理只有几行WindowEvent::DroppedFile(file) { if let Some(desc) ContentDescriptor::new_local(file, None) { self.gui.create_movie(mut self.player, options, desc); } }ContentDescriptor定义在 frontend-utils/src/content.rs是URL 可选根内容目录的封装。接着GuiController::create_moviedesktop/src/gui/controller.rs把它交给player.rs里的PlayerController由PlayerBuilder构建出Player。之后真正干活的是 core/src/swf/ crate 逐 tag 解析二进制流avm1/avm2分别执行两代 ActionScriptbackend/抽象出音频、文件系统与网络。每一帧 Player 产出一组绘制指令render/wgpu/ 的渲染后端把它们变成 GPU 调用。帧循环同样在 app.rs收到RedrawRequested时先调player.render()推进一帧逻辑再gui.render()合成界面然后必须立刻 return——代码注释写明原因否则 winit 请 egui 重绘、egui 又请 winit 重绘两边会陷入反馈循环。三个值得展开的设计细节图形后端的回退链启动时 Ruffle 按用户偏好顺序尝试后端Vulkan、Metal、OpenGLtry_wgpu_backend用一个标准判断可用性能否枚举到至少一个图形适配器。首选全失败时打一条 warn再逐个尝试Backends::all()里剩下的实在没有可用设备才报错退出。这条链让只装了老旧显示驱动的机器也能把应用拉起来。单个 SWF 不够用老 Flash 应用常是一个 .swf 入口加一堆同目录的 .swf、.jpg、.mp3 资源。ContentDescriptor的root_content_path字段就是为此准备的提供它时SWF 内部引用的资源路径会相对该目录解析多个文件一起构成一个Bundle单文件电影则走DirectFile直接加载。区别在于能打开和能完整打开。窗口看不见时不渲染处理重绘前先看!self.minimized !self.occluded窗口最小化或被其他窗口完全遮挡时跳过整帧渲染。两种平台的报告方式不同Windows 上最小化是 0×0 的 Resized 事件macOS 报 Occluded代码里逐条注明了差异。另一个细节电影处于暂停状态时没人会来触发重绘所以Occluded(false)恢复可见时要自己调request_redraw()。三步跑通 SWF 播放器git clone https://gitcode.com/GitHub_Trending/ru/ruffle cd ruffle/desktop cargo run --release跑起来后你首先会看到一个 Open File or URL 对话框上方是 File / View / Debug Tools 菜单栏。上面那张 Bloons TD 的截图来自一个 .swf。编译完之后找一台机器上任意一个 SWF 拖进窗口就能验证这套 Rust 重写的播放链路是否成立。【免费下载链接】ruffleA Flash Player emulator written in Rust项目地址: https://gitcode.com/GitHub_Trending/ru/ruffle创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

AI驱动的自动化逆向工程:提升反编译与漏洞挖掘效率

AI驱动的自动化逆向工程:提升反编译与漏洞挖掘效率

1. 项目概述 在软件安全分析和漏洞挖掘领域,逆向工程一直是核心技术手段。传统逆向工作高度依赖工程师的经验积累和手动分析,面对日益复杂的软件架构和海量代码库,这种工作模式正面临效率瓶颈。我们尝试将AI技术引入逆向工程全流程&#xff0…

📅 2026/9/10 12:50:25
在 Windsurf 中配置 daisyUI MCP 服务器:Blueprint、Context7 与 GitMCP 完整接入指南

在 Windsurf 中配置 daisyUI MCP 服务器:Blueprint、Context7 与 GitMCP 完整接入指南

在 Windsurf 中配置 daisyUI MCP 服务器:Blueprint、Context7 与 GitMCP 完整接入指南 【免费下载链接】daisyui 🌼 🌼 🌼 🌼 🌼  The most popular, free and open-source Tailwind CSS component librar…

📅 2026/9/10 12:50:25
Czkawka 完整入门指南:3 步装好开源磁盘清理工具,找出重复文件与相似图片

Czkawka 完整入门指南:3 步装好开源磁盘清理工具,找出重复文件与相似图片

Czkawka 完整入门指南:3 步装好开源磁盘清理工具,找出重复文件与相似图片 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka C…

📅 2026/9/10 12:50:25
MORE NEWS

更多资讯

📰

用 Claude Code 的 /incident 命令建立结构化事故响应:devops-automation 插件实战指南

用 Claude Code 的 /incident 命令建立结构化事故响应:devops-automation 插件实战指南 【免费下载链接】claude-howto A visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediat…

📰

Qwen Code 取消恢复机制:流式输出被 Ctrl+C 中断后如何保留部分响应并还原可编辑 Prompt

Qwen Code 取消恢复机制:流式输出被 CtrlC 中断后如何保留部分响应并还原可编辑 Prompt 【免费下载链接】qwen-code An open-source AI coding agent that lives in your terminal. 项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code 导读 本篇基…

📰

Linux原生版节点小宝一键安装与优化指南

1. 节点小宝Linux版一键安装方案解析作为长期在Linux环境下部署各类服务的运维工程师,我完全理解大家对于Docker版节点小宝的复杂感受。那个需要配置端口映射、处理卷挂载、调试网络连接的Docker方案确实让不少新手头疼。现在官方推出的Linux原生一键安装包&#xf…

📰

Linux线程原理与多线程编程实践指南

1. Linux线程基础概念解析第一次在Linux环境下接触线程概念时,我花了整整两周时间才真正理解线程与进程的区别。线程作为现代操作系统中最核心的执行单元,其重要性不亚于进程本身。在Linux系统中,线程的实现有着独特的机制和特点。1.1 线程的…

📰

Matlab六自由度机械臂正逆运动学仿真与轨迹规划实践

简介:基于Matlab搭建的六自由度机械臂正逆运动仿真项目源码,面向计算机、电子信息工程、数学等相关专业大学生,可服务于课程设计、期末大作业或毕业设计等教学场景。压缩包内共六个文件,含五个脚本文件与一个图形界面文件&#xf…

📰

MySQL运维核心体系与实战配置指南

1. MySQL运维核心体系解析作为关系型数据库的标杆产品,MySQL在互联网行业占据着不可替代的地位。我管理过的生产环境MySQL实例超过200个,处理过各种规模的性能瓶颈和故障场景。本文将系统梳理MySQL运维工程师必须掌握的完整知识体系,包含安装…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬