这没有回答所提出的具体问题,但评论太长了。
您的问题不是如何在 AIR 中包含 flex 编译器,而是如何阻止 SWF 中的模型和纹理被轻松下载。
首先,没有 100% 安全的答案;SWF 格式很容易被反编译(因此每个 SWF 嵌入 1 个文件已被淘汰),如果足够确定,有人可以查看您的应用程序的内存以找到他们需要的内容;这一切都是为了停止简单的复制。
在我的脑海中,假设您的最终目标是在线 3D 模型查看器,这些是您可以做到的一些方法:
1)有自己的格式
虽然在技术上并非不可能,但它非常尴尬;基本上,您编写自己的格式来存储和显示模型(基本上是大多数 3D 建模软件所做的)。这意味着如果有人掌握了模型文件,除非他们编写解析器(当然,您需要保护您的显示 SWF),否则对他们来说毫无用处。如果您的查看器的目的是让其他用户购买模型,那么他们将需要他们可以使用的格式,因此您的工作流程如下所示:
以通用格式创建模型 -> 转换为自定义格式以在播放器中显示 -> 用户浏览并点击“购买” -> 他们下载通用格式文件
2) 从您的站点加载 3D 模型
最简单的选择;只需直接从服务器加载模型,类似于加载图像的方式。要阻止人们直接下载文件,请将它们存储在htdocs
文件夹上方,并通过闪存中的本地 URI 访问它们。所以你的服务器文件系统看起来像这样:
- 楷模
- 文档
- 索引.html
- 3DPlayer.swf // 使用“../models/Model1”路径加载模型
因此,只有您的 SWF 可以访问模型(尽管从技术上讲,因为它是文件下载,它可能位于浏览器缓存中 - 您应该对其进行测试)。要将模型实际放入models
目录中,您需要通过 FTP 访问服务器,或者需要创建一个简单的脚本(使用 PHP 等)来上传它们。
3) 将资产流式传输到您的 SWF
如前所述,您可以使用 ColdFusion 之类的工具将资产直接流式传输到您的 SWF。虽然我没有使用 ColdFusion 的经验,所以我不能说这会如何工作,但应该不会太难
4) 数据库连接
假设您的模型在数据库(例如 MySQL 或 MongoDB)中存储为文本 blob,您可以直接连接 SWF 或使用 PHP 和 AMFPHP 连接到数据库并以这种方式流式传输模型。
您需要实施一些安全措施以确保人们无法欺骗您的服务器调用,但连接和返回值的实际代码并不太难。作为额外的奖励,您不受 SWF 格式的束缚,并且可以在需要时实现 JS 显示等。