首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未在Kongregate中加载游戏资产

未在Kongregate中加载游戏资产
EN

Stack Overflow用户
提问于 2017-04-17 21:41:47
回答 2查看 80关注 0票数 1

我刚刚创建了我的第一个游戏,并且遇到了一些问题。我上传到Kongregate(但还没有发布),在预览中外部文件(音乐和三张图片)没有加载。游戏的其余部分都运行得很好。

如果我试图将其更改为包含资产的zip,并更改代码中的目录,它将会崩溃。

我使用的是FlashDevelop,所以一切都是程序化的。我注意到swf只有几kb大,所以有没有办法将资源编译到swf文件中并以这种方式加载它们,或者我需要做一些其他的事情?

请帮助,并提前感谢。

EN

回答 2

Stack Overflow用户

发布于 2017-04-18 02:42:51

好的,那我来解释一下。让我们假设您的主模块game.swf从同一文件夹中加载了一些图像asset.jpg。你在本地测试它,它工作得很好。你在你的站点http://niamke.com/上安装了game.htmlgame.swfasset.jpg,它仍然可以工作。然后,您将游戏发布为http://kongregate.com/games/niamke/myniamkegame/,它会突然停止加载asset.jpg

为什么选择

来自Flash Player的HTTP请求通过浏览器处理。所以浏览器会收到一个来自插件实例的"asset.jpg“请求。在一个页面中可能有来自几个不同域的各种内容(包括几个Flash应用程序),所以浏览器不会费心找出正确的地址,而是直接尝试加载相对于最上面的HTML文档,基本上是不存在的http://kongregate.com/games/niamke/myniamkegame/asset.jpg

How to it (如何避免这种情况)

您应该创建一小段代码来计算您加载的文件的正确URL。将内容附加到Stage后,任何显示对象都可以访问包含绝对SWF的loaderInfo对象。

使用

代码语言:javascript
复制
Files.parseURL(loaderInfo.url);

var aLoader:Loader = new Loader;
var aRequest:URLRequest = new URLRequest(Files.baseUrl + "asset.jpg");

Loader.load(aRequest);

Implementation

代码语言:javascript
复制
package
{
    public class Files
    {
        // Long live Bill Gates and Windows and backslashes.
        static public function figureSlash(value:String):String
        {
            var aSplit:Array = value.split("/");
            var oSplit:Array = value.split("\\");

            return (aSplit.length >= oSplit.length)? "/": "\\";
        }

        static public var baseUrl:String;
        static public var systemSlash:String;

        // Supposed to dissect the SWF url in order to
        // process relative resource file urls properly.
        static public function parseURL(value:String):void
        {
            // Figure correct slash.
            systemSlash = figureSlash(value);

            // Split SWF URL into Array and remove SWF name.
            var aSplit:Array = value.split(systemSlash);
            aSplit[aSplit.length - 1] = "";

            // Obtain the SWF root folder.
            baseUrl = aSplit.join(systemSlash);
        }
    }   
}
票数 1
EN

Stack Overflow用户

发布于 2017-04-18 01:48:13

一条评论将我带到了下面的结论:“我只是将URLRequest链接到文件在线托管的位置。”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43452676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档