环境:egret版本5.2.12,renderMode为canvas 图片文件来自于oss,已设置服务端允许跨域
方案思路为将图片用xhr下载下来,然后转image对象转texture,由于ios端兼容问题,xhr代码只能放入口文件里面,在egret的ts文件里再调用。
index.html
function crossFunc(imgUrl,cb){
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var url = URL.createObjectURL(xhr.response);
cb(url)
};
xhr.open('GET', imgUrl, true);
xhr.responseType = 'blob';
xhr.send();
}
game.ts
let imgurl = 'image.png';
window['crossFunc']( // 跨域解决方案
imgurl,
(url)=> {
let img = new Image();
img.src = url;
img.onload = ()=>{
let bitmapdata:egret.BitmapData = new egret.BitmapData(img);
let _texture = new egret.Texture()
_texture.bitmapData = bitmapdata;
// _texture直接传给egret.Bitmap的texture即可
}
}
)