[]为什么laya的Button渲染逻辑顺序是先渲染,再获取素材切片?

/**
*@private
*改变对象的状态。
*/
__proto.changeState=function(){
this._stateChanged=false;
this.runCallLater(this.changeClips);
var index=this._state < this._stateNum ? this._state :this._stateNum-1;
this._sources && (this._bitmap.source=this._sources[index]);
if (this.label){
this._text.color=this._labelColors[index];
if (this._strokeColors)this._text.strokeColor=this._strokeColors[index];
}
}


__proto.changeClips=function(){
var img=Loader.getRes(this._skin);
if (!img){
console.log("lose skin",this._skin);
return;
};
var width=img.sourceWidth;
var height=img.sourceHeight / this._stateNum;
img.$_GID || (img.$_GID=Utils.getGID());
var key=img.$_GID+"-"+this._stateNum;
var clips=AutoBitmap.getCache(key);
if (clips)this._sources=clips;
else {
this._sources=;
if (this._stateNum===1){
this._sources.push(img);
}else {
for (var i=0;i < this._stateNum;i++){
this._sources.push(Texture.createFromTexture(img,0,height *i,width,height));
}
}
AutoBitmap.setCache(key,this._sources);
}
if (this._autoSize){
this._bitmap.width=this._width || width;
this._bitmap.height=this._height || height;
if (this._text){
this._text.width=this._bitmap.width;
this._text.height=this._bitmap.height;
}
}else {
this._text && (this._text.x=width);
}
}

如果说设置皮肤的时候按钮已经被标记为需要重新绘制,那执行顺序就会变成先changeState,再changeClips。
但是changeClips只是获取了切片素材,并没有把数据提供给this._bitmap。导致按钮皮肤设置失败。
已邀请:

cuixueying

赞同来自:

等最新版本1.7.6beta吧,这个问题已经修复,谢谢反馈!

cuixueying

赞同来自:

你现在是使用组件遇到问题了吗,可以把你遇到的问题描述下,并且提供一个例子,我们查下!

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作