cc.Label.string 属性问题

cc.Label.node.active = true;时
输入文字,
cc.Label.string = “123456”;
然后清空文字内容string = “”;
cc.Label.node.active = false;
设置为true
cc.Label.node.active = true;
显示输入文字123456
但是cc.Label.string还是为空cc.Label.string = “”;

代码片段为
properties: {
NumsText:{
default:null,
type:cc.Label
},

onLoad: function ()

this.NumsText = this.node.getChildByName(“NumsText”).getComponent(cc.Label);

onEnable:function()
{
this.NumsText.string = “”;
}
getstringtext::function()
{
这个是空的,显示却有内容。
return this.NumsText.string;
}

开始是拖拽的,
后改成getChildByName的,都有这个问题。
这个问题有一点怪异我用的是v2.1.2版本,不知道是不是我写错代码的缘故呢?

我测试看看。

在web平台用的HelloWorld项目测试的。
添加了下面的测试代码,没遇到问题:

你要不给我你的dmeo吧?

不是这样的,你加三个按钮,
一个输入 一个清空,一个显示隐藏在试

我写一个看看

NewProject.rar (703.7 KB)
从button1~button5,从左至右点击一次就看出来了

试了下你的 demo, 的确有 bug

是我本地的问题,还是引擎的bug 那怎么解决,是不是等到下次更新呢?

https://forum.cocos.com/uploads/default/original/3X/4/6/46af1ae1056beeb39f88b74167650f66c4cfdec0.rar

https://forum.cocos.com/t/label/81190

我之前发过的一个贴和这相似。确认过确实有问题,等待解决这个问题。

从Btn1到Btn5,他们所执行的逻辑和表现都很正常啊。

onbutton:function(event)
    {
        if(event.target.name == "Button1")
        {
            this.label.string = "123456";
        }
        else if(event.target.name == "Button2")
        {
            this.label.string = "";
        }
        else if(event.target.name== "Button3")
        {
            this.label.node.active = false;
        }else if(event.target.name == "Button4")
        {
            this.label.node.active = true;
        }
        else if(event.target.name == "Button5")
        {
          if(this.label.string.length <=0)
          {
              this.label2.string = "空内容"
          }
            else
          {
              this.label2.string  =this.label.string;
          }
        }
    },

你认为button5应该什么效果是正确的?

确实有问题。
显示123456的label文本内容是空的,好像这个label显示的还是旧的缓存。label的cacheMode换成BITMAP和CHAR显示都正常

嗯嗯 我看到了

Button2清空后,在Button3 ,在Button4,显示显示123456,但是string是没有数据的。旧的缓存还在,而且显示内容位置也变动了。偏向左一点。

label的cacheMode换成BITMAP和CHAR,完美解决。谢谢

逻辑表现是很正常。
Button2清空后,在Button3 ,在Button4,显示显示123456,但是string是没有数据的。旧的缓存还在,而且显示内容位置也变动了。偏向右一点。

必须label的cacheMode换成BITMAP和CHAR才正常。以前没注意这一点。

问题已经修复。
这是修复代码。
https://github.com/cocos-creator/engine/pull/5266

label这么改了之后,好像有个新bug。如果再onload将label的string赋值为空字符串,后面再赋值就报错了。
报错截图

这个改回来
https://github.com/cocos-creator/engine/pull/5284