-
Creator 版本:1.8.1 1.8.0
-
目标平台:
-
详细报错信息,包含调用堆栈:
-
重现方式:
在js代码 添一个带 default get方法的属性
properties: {
speed:{
default:0,
get:function(){return this._speed;},
set:function(value){this._speed = value;}
},
-
编辑器操作系统 :win7
-
出现概率:100%
Creator 版本:1.8.1 1.8.0
目标平台:
详细报错信息,包含调用堆栈:
重现方式:
在js代码 添一个带 default get方法的属性
properties: {
speed:{
default:0,
get:function(){return this._speed;},
set:function(value){this._speed = value;}
},
编辑器操作系统 :win7
出现概率:100%
你defalut作用和get差不多啊,你指望2个一起写么
defalut 是默认值 get是访问属性时触发 怎么会一样呢?
而已尽管是报错了 但是 编辑器还是有期望的显示
只有get 时


两个都有时


这决定是编辑的bug
你意思是
speed:{
get:function(){return this._speed?this._speed:10;},
set:function(value){this._speed = value;}
},
这样是吧
这样编辑是改不了 speed的值 要在代码里面设置才行
还是不明白 default 和 get 怎么不能同时有呢?
有歧义了,如果你default和get/set写在一起,那你取speed值的时候,你是拿默认的defalut的值呢,还是拿get里面返回的值呢, 所以你defalut和get/set是不能写在一起的

至于你这里编辑器界面为什么是Null,是因为你的this._speed是未定义的

你2个都有的时候为什么会是0,是因为你写了 default: 0 ,编辑器里面默认给你的speed赋值为0, 但是由于你的default下面又写了get/set方法,所以编辑器下面会给你一个红色警告
当你为属性定义set/get访问器的时候,这个变量本身并不保存数据了呀,实际保存返还的都是_speed,
所以要定义default值,应该是对_speed值进行定义然后设定default值
_speed:{
default:1,
},
就像这样
properties: {
_speed: 0,
speed:{
get:function(){return this._speed;},
set:function(value){this._speed = value;}
},
谢谢耐心的回答