Skip to content

Commit 5908d14

Browse files
committed
Merge pull request #1 from pandamicro/fix_texcache_addImage
cocos2d/cocos2d-js#1171: Fixed cc.texutreCache's addImage logic
2 parents ea75174 + 05c7123 commit 5908d14

File tree

3 files changed

+32
-58
lines changed

3 files changed

+32
-58
lines changed

CCBoot.js

+10-2
Original file line numberDiff line numberDiff line change
@@ -755,13 +755,21 @@ cc.loader = /** @lends cc.loader# */{
755755
else if (option !== undefined)
756756
cb = option;
757757

758-
var img = new Image();
758+
var img = this.getRes(url);
759+
if (img) {
760+
cb && cb(null, img);
761+
return img;
762+
}
763+
764+
img = new Image();
759765
if (opt.isCrossOrigin && location.origin != "file://")
760766
img.crossOrigin = "Anonymous";
761767

762768
var lcb = function () {
763769
this.removeEventListener('load', lcb, false);
764770
this.removeEventListener('error', ecb, false);
771+
772+
cc.loader.cache[url] = img;
765773
if (cb)
766774
cb(null, img);
767775
};
@@ -802,7 +810,7 @@ cc.loader = /** @lends cc.loader# */{
802810
type = cc.path.extname(url);
803811
}
804812

805-
var obj = self.cache[url];
813+
var obj = self.getRes(url);
806814
if (obj)
807815
return cb(null, obj);
808816
var loader = null;

cocos2d/core/textures/CCTextureCache.js

+9-30
Original file line numberDiff line numberDiff line change
@@ -349,36 +349,15 @@ if (cc._renderType === cc._RENDER_TYPE_CANVAS) {
349349

350350
tex = locTexs[url] = new cc.Texture2D();
351351
tex.url = url;
352-
if (!cc.loader.getRes(url)) {
353-
if (cc.loader._checkIsImageURL(url)) {
354-
cc.loader.load(url, function (err, img) {
355-
if (err)
356-
return cb ? cb(err) : err;
357-
358-
cc.loader.cache[url] = img;
359-
cc.textureCache.handleLoadedTexture(url);
360-
361-
var texResult = locTexs[url];
362-
363-
cb && cb.call(target,texResult);
364-
});
365-
} else {
366-
cc.loader.loadImg(url, function (err, img) {
367-
if (err)
368-
return cb ? cb(err) : err;
369-
370-
cc.loader.cache[url] = img;
371-
cc.textureCache.handleLoadedTexture(url);
372-
373-
var texResult = locTexs[url];
374-
375-
cb && cb.call(target, texResult);
376-
});
377-
}
378-
}
379-
else {
380-
tex.handleLoadedTexture();
381-
}
352+
var loadFunc = cc.loader._checkIsImageURL(url) ? cc.loader.load : cc.loader.loadImg;
353+
loadFunc.call(cc.loader, url, function (err, img) {
354+
if (err)
355+
return cb && cb.call(target, err);
356+
cc.textureCache.handleLoadedTexture(url);
357+
358+
var texResult = locTexs[url];
359+
cb && cb.call(target, texResult);
360+
});
382361

383362
return tex;
384363
};

cocos2d/core/textures/TexturesWebGL.js

+13-26
Original file line numberDiff line numberDiff line change
@@ -881,32 +881,19 @@ cc._tmp.WebGLTextureCache = function () {
881881
cb && cb.call(target, tex);
882882
return tex;
883883
}
884-
885-
886-
if (!cc.loader.getRes(url)) {
887-
if (cc.loader._checkIsImageURL(url)) {
888-
cc.loader.load(url, function (err,img) {
889-
cc.loader.cache[url] = img;
890-
cc.textureCache.handleLoadedTexture(url);
891-
892-
var texResult = locTexs[url];
893-
894-
cb && cb.call(target,texResult);
895-
});
896-
} else {
897-
cc.loader.loadImg(url, function (err, img) {
898-
if (err)
899-
return cb ? cb(err) : err;
900-
cc.loader.cache[url] = img;
901-
cc.textureCache.handleLoadedTexture(url);
902-
903-
var texResult = locTexs[url];
904-
905-
cb && cb.call(target, texResult);
906-
});
907-
}
908-
}
909-
884+
885+
tex = locTexs[url] = new cc.Texture2D();
886+
tex.url = url;
887+
var loadFunc = cc.loader._checkIsImageURL(url) ? cc.loader.load : cc.loader.loadImg;
888+
loadFunc.call(cc.loader, url, function (err, img) {
889+
if (err)
890+
return cb && cb.call(target, err);
891+
cc.textureCache.handleLoadedTexture(url);
892+
893+
var texResult = locTexs[url];
894+
cb && cb.call(target, texResult);
895+
});
896+
910897
return tex;
911898
};
912899
_p = null;

0 commit comments

Comments
 (0)