1

我目前正在使用 Flex SDK 为 web 开发一个 swf 3D 播放器。我的目标是创建一个空中应用程序,让用户加载模型并将它们导出到 .swf 3D 播放器,以使这些 3d 模型可以在网络上查看。我正在使用 FlashDevelop。

我最初的目标是将 mxmlc 编译器和整个 flex sdk 包含在我的 air apps bin 目录中,并使用带有参数(命令行)的 airs 本机扩展运行那些。问题是 flex sdk 的大小约为 800Mb,并且再次需要 JRE 来运行 mxmlc。

有没有办法在我的空中应用程序中包含一个不需要 800mb+ 的简约编译器?我知道我可以输出一个通用的 swf,它首先加载一个带有模型和纹理路径的配置文件,然后加载它们,但我希望将模型和纹理包含在 swf 中,以确保它们不会被轻松下载。有什么建议么?

4

1 回答 1

1

这没有回答所提出的具体问题,但评论太长了。

您的问题不是如何在 AIR 中包含 flex 编译器,而是如何阻止 SWF 中的模型和纹理被轻松下载。

首先,没有 100% 安全的答案;SWF 格式很容易被反编译(因此每个 SWF 嵌入 1 个文件已被淘汰),如果足够确定,有人可以查看您的应用程序的内存以找到他们需要的内容;这一切都是为了停止简单的复制。

在我的脑海中,假设您的最终目标是在线 3D 模型查看器,这些是您可以做到的一些方法:

1)有自己的格式

虽然在技术上并非不可能,但它非常尴尬;基本上,您编写自己的格式来存储和显示模型(基本上是大多数 3D 建模软件所做的)。这意味着如果有人掌握了模型文件,除非他们编写解析器(当然,您需要保护您的显示 SWF),否则对他们来说毫无用处。如果您的查看器的目的是让其他用户购买模型,那么他们将需要他们可以使用的格式,因此您的工作流程如下所示:

以通用格式创建模型 -> 转换为自定义格式以在播放器中显示 -> 用户浏览并点击“购买” -> 他们下载通用格式文件

2) 从您的站点加载 3D 模型

最简单的选择;只需直接从服务器加载模型,类似于加载图像的方式。要阻止人们直接下载文件,请将它们存储在htdocs文件夹上方,并通过闪存中的本地 URI 访问它们。所以你的服务器文件系统看起来像这样:

  • 楷模
    • 型号1
    • 模型2
    • ...
  • 文档
    • 索引.html
    • 3DPlayer.swf // 使用“../models/Model1”路径加载模型

因此,只有您的 SWF 可以访问模型(尽管从技术上讲,因为它是文件下载,它可能位于浏览器缓存中 - 您应该对其进行测试)。要将模型实际放入models目录中,您需要通过 FTP 访问服务器,或者需要创建一个简单的脚本(使用 PHP 等)来上传它们。

3) 将资产流式传输到您的 SWF

如前所述,您可以使用 ColdFusion 之类的工具将资产直接流式传输到您的 SWF。虽然我没有使用 ColdFusion 的经验,所以我不能说这会如何工作,但应该不会太难

4) 数据库连接

假设您的模型在数据库(例如 MySQL 或 MongoDB)中存储为文本 blob,您可以直接连接 SWF 或使用 PHP 和 AMFPHP 连接到数据库并以这种方式流式传输模型。

您需要实施一些安全措施以确保人们无法欺骗您的服务器调用,但连接和返回值的实际代码并不太难。作为额外的奖励,您不受 SWF 格式的束缚,并且可以在需要时实现 JS 显示等。

于 2013-09-11T17:10:00.773 回答