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、跨域的问题如何更好的解决

  • 相关阅读:
    Centos 6下使用cmake编译安装MariaDB
    mysql索引
    mysql基础指令知识
    git/github安装与使用教程
    Linux目录结构详解
    static关键字的作用(修饰类、方法、变量、静态块)
    Java中重载(overloading)和重写(Overriding)的区别
    @PropertySources和@ImportReSources注解
    @ConfigurationProperties注解和@Value注解的区别
    Java中数组的定义,初始化和使用
  • 原文地址:https://www.cnblogs.com/mazhiyong/p/13719244.html
Copyright © 2011-2022 走看看