zoukankan      html  css  js  c++  java
  • Cocos Creator 加载远程资源和设备资源

    在目前的 Cocos Creator 中,我们支持加载远程贴图资源,这对于加载用户头像等需要向服务器请求的贴图很友好,需要注意的是,这需要开发者直接调用 cc.assetManager.loadRemote 方法。同时,如果开发者用其他方式下载了资源到本地设备存储中,也需要用同样的 API 来加载,上文中的 cc.resources.load 等 API 只适用于应用包内的资源和热更新的本地资源。下面是这个 API 的用法:

    // 远程 url 带图片后缀名
    var remoteUrl = "http://unknown.org/someres.png";
    cc.assetManager.loadRemote(remoteUrl, function (err, texture) {
        // Use texture to create sprite frame
    });
    
    // 远程 url 不带图片后缀名,此时必须指定远程图片文件的类型
    remoteUrl = "http://unknown.org/emoji?id=124982374";
    cc.assetManager.loadRemote(remoteUrl, {ext: '.png'}, function () {
        // Use texture to create sprite frame
    });
    
    // 用绝对路径加载设备存储内的资源,比如相册
    var absolutePath = "/dara/data/some/path/to/image.png"
    cc.assetManager.loadRemote(absolutePath, function () {
        // Use texture to create sprite frame
    });
    
    // 远程音频
    remoteUrl = "http://unknown.org/sound.mp3";
    cc.assetManager.loadRemote(remoteUrl, function (err, audioClip) {
        // play audio clip
    });
    
    // 远程文本
    remoteUrl = "http://unknown.org/skill.txt";
    cc.assetManager.loadRemote(remoteUrl, function (err, textAsset) {
        // use string to do something
    });

    目前的此类手动资源加载还有一些限制,对开发者影响比较大的是:

    1. 这种加载方式只支持图片、声音、文本等原生资源类型,不支持 SpriteFrame、SpriteAtlas、Tilemap 等资源的直接加载和解析。(如需远程加载所有资源,可使用 Asset Bundle)
    2. Web 端的远程加载受到浏览器的 CORS 跨域策略限制,如果对方服务器禁止跨域访问,那么会加载失败,而且由于 WebGL 安全策略的限制,即便对方服务器允许 http 请求成功之后也无法渲染。

    目前尚未确认的问题是:

    1、能否加载远程js资源

    2、跨域的问题如何更好的解决

  • 相关阅读:
    游戏架构草稿(1)
    蔡学镛:架构师最重视的文档
    常见拉丁字母
    图像识别学习1
    .net framework 2.0,3.0与3.5之间的关系 [转载]
    ASP.NET Session丢失问题原因及解决方案[转载]
    PLSQL 循环游标 cursor loop fetch into【转载】
    oracle case when的用法 【转载】
    Oracle to_char格式化函数 [转载]
    oracle表关联应用 【转载】
  • 原文地址:https://www.cnblogs.com/mazhiyong/p/13719244.html
Copyright © 2011-2022 走看看