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、跨域的問題如何更好的解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM