まだ理解が浅いので、解釈など間違っているかもしれませんが、確認した内容を書きます。
今回は、スクリプトのPropertiesについて。
目次
使用環境
私が使用している環境です。
- Mac OS X El Capitan Version 10.11.4
- Cocos Creator Version 1.0
- ブラウザ:Google Chrome Version 49.0.2623.112 (64-bit)
属性値のgetter/setter
属性値にgetter/setterを設定できます。
設定例:『_(アンダースコア)』に注意
Radiusという属性値を作って、getter/setterを設定した例です。
getter/setter内では、属性値の先頭に『_(アンダースコア)』を付けます。
付け忘れると暴走(無限ループ)します。
properties: { Radius: { // 半径 get: function() { return this._Radius; }, set: function (value) { this._Radius = value; this.RadiusSq = Math.pow(value, 2); // 2乗して代入 }, }, RadiusSq: 0, // 半径の2乗 },
上記のコードで定義して、下記のように値を代入すると
onLoad: function () { // ノードのロード時に実行 this.Radius = 10; cc.log("this.Radius = " + this.Radius); cc.log("this.RadiusSq = " + this.RadiusSq); }, |<< 下記のように出力されます。 >|javascript| this.Radius = 10 this.RadiusSq = 100
捕捉
『_(アンダースコア)』の有無を逆に出来ます。
属性値の名前の先頭に『_(アンダースコア)』をつけた場合は、逆にgetter/setter内では『_(アンダースコア)』を外します。
properties: { _Radius: { // 半径 get: function() { return this.Radius; }, set: function (value) { this.Radius = value; this.RadiusSq = Math.pow(value, 2); // 2乗して代入 }, }, RadiusSq: 0, // 半径の2乗 },
getterだけ設定出来ます。
getterだけの場合は、Read onlyになります。
getter/setterとdefaultは同時に使えません。
同時に書くと、getter/setterが無視されます。
コンソールにエラーメッセージが表示されますが、実行されます。
getter/setterを設定した属性値は『Properties』パネルに表示されません。
getter/setterを設定した属性値は、『visible: false,』にしていなくても表示されません。
属性値の先頭に『_(アンダースコア)』=『visible: false,』
属性値の名前の先頭に『_(アンダースコア)』を付けると、デフォルトで『visible: false,』となります。
あとがき
属性値の名前の先頭に『_(アンダースコア)』を付けるとパネルに非表示になるのは、自分で発見した!っと思ったら思い切りマニュアルに書かれていました。