Skip to content

Commit c0de7f2

Browse files
committed
Fixed a bug of Scale9Sprite that it doesn't work when texture doesn't preload.
1 parent eb14077 commit c0de7f2

File tree

2 files changed

+18
-18
lines changed

2 files changed

+18
-18
lines changed

Diff for: extensions/ccui/base-classes/UIScale9Sprite.js

+9-9
Original file line numberDiff line numberDiff line change
@@ -467,11 +467,11 @@ ccui.Scale9Sprite = cc.Node.extend(/** @lends ccui.Scale9Sprite# */{
467467
if(!locLoaded){
468468
texture.addEventListener("load", function(sender){
469469
// the texture is rotated on Canvas render mode, so isRotated always is false.
470-
var preferredSize = this._preferredSize;
471-
preferredSize = cc.size(preferredSize.width, preferredSize.height);
470+
var preferredSize = this._preferredSize, restorePreferredSize = preferredSize.width !== 0 && preferredSize.height !== 0;
471+
if (restorePreferredSize) preferredSize = cc.size(preferredSize.width, preferredSize.height);
472472
var size = sender.getContentSize();
473473
this.updateWithBatchNode(this._scale9Image, cc.rect(0,0,size.width,size.height), false, this._capInsets);
474-
this.setPreferredSize(preferredSize);
474+
if (restorePreferredSize)this.setPreferredSize(preferredSize);
475475
this._positionsAreDirty = true;
476476
this.dispatchEvent("load");
477477
}, this);
@@ -500,10 +500,10 @@ ccui.Scale9Sprite = cc.Node.extend(/** @lends ccui.Scale9Sprite# */{
500500
if(!locLoaded){
501501
spriteFrame.addEventListener("load", function(sender){
502502
// the texture is rotated on Canvas render mode, so isRotated always is false.
503-
var preferredSize = this._preferredSize;
504-
preferredSize = cc.size(preferredSize.width, preferredSize.height);
503+
var preferredSize = this._preferredSize, restorePreferredSize = preferredSize.width !== 0 && preferredSize.height !== 0;
504+
if (restorePreferredSize) preferredSize = cc.size(preferredSize.width, preferredSize.height);
505505
this.updateWithBatchNode(this._scale9Image, sender.getRect(), cc._renderType === cc._RENDER_TYPE_WEBGL && sender.isRotated(), this._capInsets);
506-
this.setPreferredSize(preferredSize);
506+
if (restorePreferredSize)this.setPreferredSize(preferredSize);
507507
this._positionsAreDirty = true;
508508
this.dispatchEvent("load");
509509
},this);
@@ -900,10 +900,10 @@ ccui.Scale9Sprite = cc.Node.extend(/** @lends ccui.Scale9Sprite# */{
900900
if(!locLoaded){
901901
spriteFrame.addEventListener("load", function(sender){
902902
// the texture is rotated on Canvas render mode, so isRotated always is false.
903-
var preferredSize = this._preferredSize;
904-
preferredSize = cc.size(preferredSize.width, preferredSize.height);
903+
var preferredSize = this._preferredSize, restorePreferredSize = preferredSize.width !== 0 && preferredSize.height !== 0;
904+
if (restorePreferredSize) preferredSize = cc.size(preferredSize.width, preferredSize.height);
905905
this.updateWithBatchNode(this._scale9Image, sender.getRect(), cc._renderType === cc._RENDER_TYPE_WEBGL && sender.isRotated(), this._capInsets);
906-
this.setPreferredSize(preferredSize);
906+
if (restorePreferredSize)this.setPreferredSize(preferredSize);
907907
this._positionsAreDirty = true;
908908
this.dispatchEvent("load");
909909
},this);

Diff for: extensions/gui/control-extension/CCScale9Sprite.js

+9-9
Original file line numberDiff line numberDiff line change
@@ -462,11 +462,11 @@ cc.Scale9Sprite = cc.Node.extend(/** @lends cc.Scale9Sprite# */{
462462
if(!locLoaded){
463463
texture.addEventListener("load", function(sender){
464464
// the texture is rotated on Canvas render mode, so isRotated always is false.
465-
var preferredSize = this._preferredSize;
466-
preferredSize = cc.size(preferredSize.width, preferredSize.height);
465+
var preferredSize = this._preferredSize, restorePreferredSize = (preferredSize.width !== 0 || preferredSize.height !== 0);
466+
if(restorePreferredSize)preferredSize = cc.size(preferredSize.width, preferredSize.height);
467467
var size = sender.getContentSize();
468468
this.updateWithBatchNode(this._scale9Image, cc.rect(0,0,size.width,size.height), false, this._capInsets);
469-
this.setPreferredSize(preferredSize);
469+
if(restorePreferredSize)this.setPreferredSize(preferredSize);
470470
this._positionsAreDirty = true;
471471
this.dispatchEvent("load");
472472
}, this);
@@ -495,10 +495,10 @@ cc.Scale9Sprite = cc.Node.extend(/** @lends cc.Scale9Sprite# */{
495495
if(!locLoaded){
496496
spriteFrame.addEventListener("load", function(sender){
497497
// the texture is rotated on Canvas render mode, so isRotated always is false.
498-
var preferredSize = this._preferredSize;
499-
preferredSize = cc.size(preferredSize.width, preferredSize.height);
498+
var preferredSize = this._preferredSize, restorePreferredSize = (preferredSize.width !== 0 || preferredSize.height !== 0);
499+
if(restorePreferredSize)preferredSize = cc.size(preferredSize.width, preferredSize.height);
500500
this.updateWithBatchNode(this._scale9Image, sender.getRect(), cc._renderType === cc._RENDER_TYPE_WEBGL && sender.isRotated(), this._capInsets);
501-
this.setPreferredSize(preferredSize);
501+
if(restorePreferredSize)this.setPreferredSize(preferredSize);
502502
this._positionsAreDirty = true;
503503
this.dispatchEvent("load");
504504
},this);
@@ -895,10 +895,10 @@ cc.Scale9Sprite = cc.Node.extend(/** @lends cc.Scale9Sprite# */{
895895
if(!locLoaded){
896896
spriteFrame.addEventListener("load", function(sender){
897897
// the texture is rotated on Canvas render mode, so isRotated always is false.
898-
var preferredSize = this._preferredSize;
899-
preferredSize = cc.size(preferredSize.width, preferredSize.height);
898+
var preferredSize = this._preferredSize, restorePreferredSize = (preferredSize.width !== 0 || preferredSize.height !== 0);
899+
if(restorePreferredSize)preferredSize = cc.size(preferredSize.width, preferredSize.height);
900900
this.updateWithBatchNode(this._scale9Image, sender.getRect(), cc._renderType === cc._RENDER_TYPE_WEBGL && sender.isRotated(), this._capInsets);
901-
this.setPreferredSize(preferredSize);
901+
if(restorePreferredSize)this.setPreferredSize(preferredSize);
902902
this._positionsAreDirty = true;
903903
this.dispatchEvent("load");
904904
},this);

0 commit comments

Comments
 (0)