Skip to content

Commit 4f4667e

Browse files
authored
Merge pull request cocos2d#3296 from zilongshanren/cache-base-image
Cache base 64 image of PageViewIndicator and ScrollViewBar
2 parents 5e69561 + 2a4e5d2 commit 4f4667e

File tree

3 files changed

+25
-19
lines changed

3 files changed

+25
-19
lines changed

extensions/ccui/system/UIHelper.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,5 +160,20 @@ ccui.helper = {
160160
height = 0.0;
161161
}
162162
return cc.rect(x, y, width, height);
163+
},
164+
165+
_createSpriteFromBase64: function(base64String, key) {
166+
var texture2D = cc.textureCache.getTextureForKey(key);
167+
168+
if(!texture2D) {
169+
var image = new Image();
170+
image.src = base64String;
171+
cc.textureCache.cacheImage(key, image);
172+
texture2D = cc.textureCache.getTextureForKey(key);
173+
}
174+
175+
var sprite = new cc.Sprite(texture2D);
176+
177+
return sprite;
163178
}
164179
};

extensions/ccui/uiwidgets/scroll-widget/UIPageViewIndicator.js

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,7 @@ ccui.PageViewIndicator = ccui.ProtectedNode.extend(/** @lends ccui.PageViewIndic
5555
this._spaceBetweenIndexNodes = ccui.PageViewIndicator.SPACE_BETWEEN_INDEX_NODES_DEFAULT;
5656
this._indexNodesColor = cc.color.WHITE;
5757

58-
var image = new Image();
59-
image.src = ccui.PageViewIndicator.CIRCLE_IMAGE;
60-
61-
this._currentIndexNode = new cc.Sprite(image);
58+
this._currentIndexNode = ccui.helper._createSpriteFromBase64(ccui.PageViewIndicator.CIRCLE_IMAGE, ccui.PageViewIndicator.CIRCLE_IMAGE_KEY);
6259
this._currentIndexNode.setVisible(false);
6360
this.addProtectedChild(this._currentIndexNode, 1);
6461

@@ -279,10 +276,7 @@ ccui.PageViewIndicator = ccui.ProtectedNode.extend(/** @lends ccui.PageViewIndic
279276

280277
if(this._useDefaultTexture)
281278
{
282-
var image = new Image();
283-
image.src = ccui.PageViewIndicator.CIRCLE_IMAGE;
284-
285-
indexNode = new cc.Sprite(image);
279+
indexNode = ccui.helper._createSpriteFromBase64(ccui.PageViewIndicator.CIRCLE_IMAGE, ccui.PageViewIndicator.CIRCLE_IMAGE_KEY);
286280
}
287281
else
288282
{
@@ -342,4 +336,5 @@ cc.defineGetterSetter(_p, "spaceBetweenIndexNodes", _p.getSpaceBetweenIndexNodes
342336
* @ignore
343337
*/
344338
ccui.PageViewIndicator.SPACE_BETWEEN_INDEX_NODES_DEFAULT = 23;
345-
ccui.PageViewIndicator.CIRCLE_IMAGE = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAA8ElEQVRIx62VyRGCQBBF+6gWRCEmYDIQkhiBCgHhSclC8YqWzOV5oVzKAYZp3r1/9fpbxAIBMTsKrjx5cqVgR0wgLhCRUWOjJiPqD56xoaGPhpRZV/iSEy6crHmw5oIrF9b/lVeMofrJgjlnxlIy/wik+JB+mme8BExbBhm+5CJC2LE2LtSEQoyGWDioBA5CoRIohJtK4CYDxzNEM4GAugR1E9VjVC+SZpXvhCJCrjomESLvc17pDGX7bWmlh6UtpjPVCWy9zaJ0TD7qfm3pwERMz2trRVZk3K3BD/L34AY+dEDCniMVBkPFkT2J/b2/AIV+dRpFLOYoAAAAAElFTkSuQmCC";
339+
ccui.PageViewIndicator.CIRCLE_IMAGE_KEY = "/__circle_image";
340+
ccui.PageViewIndicator.CIRCLE_IMAGE = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAA8ElEQVRIx62VyRGCQBBF+6gWRCEmYDIQkhiBCgHhSclC8YqWzOV5oVzKAYZp3r1/9fpbxAIBMTsKrjx5cqVgR0wgLhCRUWOjJiPqD56xoaGPhpRZV/iSEy6crHmw5oIrF9b/lVeMofrJgjlnxlIy/wik+JB+mme8BExbBhm+5CJC2LE2LtSEQoyGWDioBA5CoRIohJtK4CYDxzNEM4GAugR1E9VjVC+SZpXvhCJCrjomESLvc17pDGX7bWmlh6UtpjPVCWy9zaJ0TD7qfm3pwERMz2trRVZk3K3BD/L34AY+dEDCniMVBkPFkT2J/b2/AIV+dRpFLOYoAAAAAElFTkSuQmCC";

extensions/ccui/uiwidgets/scroll-widget/UIScrollViewBar.js

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,23 +81,17 @@ ccui.ScrollViewBar = ccui.ProtectedNode.extend(/** @lends ccui.ScrollViewBar# */
8181
* @returns {boolean}
8282
*/
8383
init: function () {
84-
var halfPixelImage = new Image();
85-
halfPixelImage.src = ccui.ScrollViewBar.HALF_CIRCLE_IMAGE;
86-
87-
this._upperHalfCircle = new cc.Sprite(halfPixelImage);
84+
this._upperHalfCircle = ccui.helper._createSpriteFromBase64(ccui.ScrollViewBar.HALF_CIRCLE_IMAGE, ccui.ScrollViewBar.HALF_CIRCLE_IMAGE_KEY);
8885
this._upperHalfCircle.setAnchorPoint(cc.p(0.5, 0));
8986

90-
this._lowerHalfCircle = new cc.Sprite(halfPixelImage);
87+
this._lowerHalfCircle = ccui.helper._createSpriteFromBase64(ccui.ScrollViewBar.HALF_CIRCLE_IMAGE, ccui.ScrollViewBar.HALF_CIRCLE_IMAGE_KEY);
9188
this._lowerHalfCircle.setAnchorPoint(cc.p(0.5, 0));
9289
this._lowerHalfCircle.setScaleY(-1);
9390

9491
this.addProtectedChild(this._upperHalfCircle);
9592
this.addProtectedChild(this._lowerHalfCircle);
9693

97-
var bodyImage = new Image();
98-
bodyImage.src = ccui.ScrollViewBar.BODY_IMAGE_1_PIXEL_HEIGHT;
99-
100-
this._body = new cc.Sprite(bodyImage);
94+
this._body = ccui.helper._createSpriteFromBase64(ccui.ScrollViewBar.BODY_IMAGE_1_PIXEL_HEIGHT, ccui.ScrollViewBar.BODY_IMAGE_1_PIXEL_HEIGHT_KEY);
10195
this._body.setAnchorPoint(cc.p(0.5, 0));
10296
this.addProtectedChild(this._body);
10397

@@ -379,5 +373,7 @@ ccui.ScrollViewBar.DEFAULT_COLOR = cc.color(52, 65, 87);
379373
ccui.ScrollViewBar.DEFAULT_MARGIN = 20;
380374
ccui.ScrollViewBar.DEFAULT_AUTO_HIDE_TIME = 0.2;
381375
ccui.ScrollViewBar.DEFAULT_SCROLLBAR_OPACITY = 0.4;
376+
ccui.ScrollViewBar.HALF_CIRCLE_IMAGE_KEY = "/__half_circle_image";
382377
ccui.ScrollViewBar.HALF_CIRCLE_IMAGE = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAGCAMAAADAMI+zAAAAJ1BMVEX///////////////////////////////////////////////////9Ruv0SAAAADHRSTlMABgcbbW7Hz9Dz+PmlcJP5AAAAMElEQVR4AUXHwQ2AQAhFwYcLH1H6r1djzDK3ASxUpTBeK/uTCyz7dx54b44m4p5cD1MwAooEJyk3AAAAAElFTkSuQmCC";
383-
ccui.ScrollViewBar.BODY_IMAGE_1_PIXEL_HEIGHT = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAABCAMAAADdNb8LAAAAA1BMVEX///+nxBvIAAAACklEQVR4AWNABgAADQABYc2cpAAAAABJRU5ErkJggg==";
378+
ccui.ScrollViewBar.BODY_IMAGE_1_PIXEL_HEIGHT_KEY = "/__body_image_height";
379+
ccui.ScrollViewBar.BODY_IMAGE_1_PIXEL_HEIGHT = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAABCAMAAADdNb8LAAAAA1BMVEX///+nxBvIAAAACklEQVR4AWNABgAADQABYc2cpAAAAABJRU5ErkJggg==";

0 commit comments

Comments
 (0)