【问题标题】:Is there anyway to change the path of a blob from URL.createObjectURL无论如何要从 URL.createObjectURL 更改 blob 的路径
【发布时间】:2020-06-03 02:39:21
【问题描述】:

我正在使用 GMS1.4 HTML5 模块,我目前正在尝试将精灵图像导入它。问题是我不想将它保存在本地目录中,因为有一个内置函数允许从 URL 添加精灵,我想只使用 blob 来完成工作,所以临时精灵在用户完成游戏后从内存中删除。

问题是 1.4 是沙盒,所以所有 url 链接和引用似乎都指向本地存储。而不是

blob:http://mysite.co/85cad96e-e44e-a1f9-db97a96ed3fe

它会像这样准备好

http://mysite.co/html5game/blob:http://mysite/85cad96e-e44e-a1f9-db97a96ed3fe

我只是假设它是由于 GMS 的沙盒性质,似乎没有办法将其关闭。我的下一个想法是因为它想固执地使用沙盒目录,所以只是在该文件夹中创建 blob。是否可以在路径和 URL.createObjectURL 处创建?

【问题讨论】:

  • No you can't,你最好只问最初的问题:如何让游戏制作者不预处理你的链接。

标签: javascript jquery html game-maker


【解决方案1】:

您可以根据我为 "Allow Data URI" 所做的调整一种方法,以允许 blob URI。摘录如下,

GML:

#define gmcallback_AllowDataURI
if (AllowDataURI()) {
    AllowDataURI(sprite_add("", 1, 0, 0, 0, 0));
}

JS:

function AllowDataURI() {
    var p0 = "\\s*\\(\\s*";
    var p1 = "\\s*\\)\\s*";
    var eq = "\\s*=\\s*";
    var id = "\\w+";
    //
    var init_js = window.gml_Script_gmcallback_AllowDataURI.toString();
    var sprite_add_js = window[
        /\bAllowDataURI\s*\(\s*(\w+)/.exec(init_js)[1] // AllowDataURI(sprite_add(...
    ].toString();
    var sprite_add_url = /function\s*\w*\s*\((\w+)/g.exec(sprite_add_js)[1];
    var sprite_add_url2 = new RegExp(
        "("+id+")"+eq+sprite_add_url+"\\b", // `sprite_add_url2 = sprite_add_url`
    "g").exec(sprite_add_js);
    sprite_add_url2 = sprite_add_url2 ? sprite_add_url2[1] : sprite_add_url;
    //
    var image_add_js = window[new RegExp(
        id+eq+"("+id+")"+p0+sprite_add_url2+p1, // `_ = image_add(sprite_add_url2)`
    "g").exec(sprite_add_js)[1]].toString();
    var image_add_url = /function\s*\w*\s*\((\w+)/g.exec(image_add_js)[1];
    //
    var url_proc = new RegExp(
        id+eq+"("+id+")"+p0+image_add_url+p1, // `_ = url_proc(image_add_url)`
    "g").exec(image_add_js)[1];
    window[url_proc] = (function() {
        var f = window[url_proc];
        return function(url) {
            if (url.substring(0, 5) == "data:") return url;
            if (url.substring(0, 5) == "blob:") return url; // new!
            return f.apply(this, arguments);
        };
    })();
    //
    return false;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 2021-06-08
    • 1970-01-01
    • 2018-12-31
    • 2016-04-12
    • 2016-02-04
    • 1970-01-01
    相关资源
    最近更新 更多