如何从 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.swf
到 level10.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) 浏览器中显示此错误:<Message>All access to this object has been disabled</Message>
。 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 文件的主要内容,如果未能解决你的问题,请参考以下文章
S3Client 无法在 QuarkusTest 中加载凭据,在 quarkus 2+ 中使用 QuarkusTestResourceLifecycleManager