var Base64 = {
_keyStr: “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=”,
// public method for encoding
encode: function encode(input) {
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;
//input = Base64._utf8_encode(input); //comment out to encode binary file(like image)
while (i < input.length) {
chr1 = input[i++];
chr2 = input[i++];
chr3 = input[i++];
enc1 = chr1 >> 2;
enc2 = (chr1 & 3) << 4 | chr2 >> 4;
enc3 = (chr2 & 15) << 2 | chr3 >> 6;
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output + Base64._keyStr.charAt(enc1) + Base64._keyStr.charAt(enc2) + Base64._keyStr.charAt(enc3) + Base64._keyStr.charAt(enc4);
}
return output;
}
};
function loadRemoteImg(url) {
var img = null;
var xmlhttp = new XMLHttpRequest();
var xhr = xmlhttp;
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
//console.log(xhr.responseText);
//var res = xhr.responseText;
var blob = new Uint8Array(this.response);
var img = new Image();
var base = "data:image/png;base64," + Base64.encode(blob);
img.src = base;
var spriteFrame = spImg.getComponent('cc.Sprite').spriteFrame;
//var texture=spriteFrame.getTexture();
var texture = new cc.Texture2D();
texture.generateMipmaps = false;
texture.initWithElement(img);
texture.handleLoadedTexture();
var newframe = new cc.SpriteFrame(texture);
spImg.getComponent('cc.Sprite').spriteFrame = newframe;
}
};
xmlhttp.open("get", url);
xhr.responseType = 'arraybuffer';
xhr.send(null);
};
经过测试的跨域加载图片,base64 编码模式动态加载texture,代码片段