如何从 S3 在 android 游戏中加载 swf 文件

Posted

技术标签:

【中文标题】如何从 S3 在 android 游戏中加载 swf 文件【英文标题】:How to load swf files in android game from S3 【发布时间】:2019-10-02 04:38:22 【问题描述】:

我有一个 10 级的安卓游戏。菜单屏幕将有图标来加载关卡。每个级别都是一个单独的文件,例如 level1.swflevel10.swf。当游戏托管在 GoDaddy 中时,这些文件在游戏中加载正常。

问题: 当我使用 public 设置将文件移动到 S3 存储(亚马逊网络服务)时, 文件正在浏览器中下载,但游戏中没有加载相同的文件。

有什么建议吗?

我尝试过同时使用这两种 S3 URL 格式..

https://gamefolder.s3.amazonaws.com/level1.swf

https://s3.amazonaws.com/gamefolder/level1.swf

我的结果是:

在浏览器中工作 在网站的 html 页面中工作 在游戏中不工作

我的 crossdomain.xml 如下

<cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFile.xsd">
  <allow-access-from domain="*"/>
</cross-domain-policy>

但是,托管在 google 存储中的文件运行良好

if(lev==2) 

    URLArray[1] ="https://storage.googleapis.com/reverie/andriod_assets1/Reverie_8.swf"

if(lev>=3) 

URLArray[1] ="https://game.s3.amazonaws.com/levels/level"+1+".swf"

游戏可以加载并玩 2 级 游戏无法加载关卡 3

【问题讨论】:

将文件作为数据下载到 File.applicationStorageDirectory,然后作为 SWF 从那里加载。 @Organis 相同的文件如果托管在 godaddy 中可以工作,但不能在 S3 中工作 您的链接有错误。他们如何“在浏览器中工作”?问题出在您的上传设置中。检查section c: Public Access。还要检查您是否使用correct EndPoint for your region。 您的所有 AWS 链接都在 (Chrome) 浏览器中显示此错误:&lt;Message&gt;All access to this object has been disabled&lt;/Message&gt;。 Google 存储中的 .swf 可以下载。问题再次出在您的 AWS 设置中。确保您的 S3 bucket 具有适合您所在地区的正确 endpoint。那是xxx.amazonaws.com url 中的XXX。如果您不在美国,那么您的存储桶端点不是 S3。我自己 8 年来,自从我在英国以来,我不得不使用端点 eu-west。您在阅读他们的屏幕说明吗?不要只是快速单击确定所有内容,然后对锁定的文件访问感到惊讶。 【参考方案1】:

请验证您使用的endpoint 是否正确。

但是,建议的做法是使用 AWS SDK for android 中的 TransferUtility 来访问您的 S3 存储桶。

【讨论】:

以上是关于如何从 S3 在 android 游戏中加载 swf 文件的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 S3 存储桶中加载 CSV 文件的任务很多?

如何使用 PySpark 从日常文件中加载滚动窗口?

U3D游戏运行时资源是如何从AB中加载出来的

S3Client 无法在 QuarkusTest 中加载凭据,在 quarkus 2+ 中使用 QuarkusTestResourceLifecycleManager

如何在红移光谱表中加载正确的数据?

无法在 JRE 8 中加载字体