ブロック インスタンスには、ユーザーに対する動作を構成するプロパティがいくつかあります。これらはブロック定義で設定できますが、ワークスペース内のブロックを制約してドメインの特定のプロパティ(「開始」イベントが 1 つだけ存在するなど)を反映したり、ユーザーの作業に集中したり(チュートリアルなど)するために使用されることが一般的です。
削除可能な状態
block.setDeletable(false);
false
に設定すると、ユーザーはブロックを削除できなくなります。編集可能なワークスペースでは、ブロックはデフォルトで削除可能です。
ブロックは(削除できないブロックも含めて)プログラムで削除できます。
block.dispose();
編集可能な状態
block.setEditable(false);
false
に設定すると、ユーザーはブロックのフィールド(プルダウンやテキスト入力など)を変更できなくなります。編集可能なワークスペースでは、ブロックはデフォルトで編集可能になります。
移動可能な状態
block.setMovable(false);
false
に設定すると、ユーザーはブロックを直接移動できなくなります。別のブロックの子である移動できないブロックは、そのブロックから切り離すことはできませんが、親が移動すると親とともに移動します。編集可能なワークスペースでは、ブロックはデフォルトで移動可能です。
ワークスペースに配置されたブロックは、移動できないブロックであっても、プログラムで移動できます。
block.moveBy(dx, dy)
ワークスペース上のブロックの開始位置は、デフォルトで (0, 0)
に設定されています。
データをブロックする
block.data = '16dcb3a4-bd39-11e4-8dfc-aa07a5b093db';
データは、ブロックに付加されるオプションの任意の文字列です。ブロックがシリアル化されると、データ文字列もシリアル化されます。ブロックが複製またはコピー&ペーストされた場合も含まれます。
多くの場合、これはブロックを外部リソースに関連付けるために使用されます。
JSON にシリアル化されると、データはブロックの最上位プロパティとして保存されます。
{
"type": "my_block",
"data": "16dcb3a4-bd39-11e4-8dfc-aa07a5b093db",
// etc..
}
XML にシリアル化されると(古い iceboxed シリアル化システム)、データ文字列はブロック内の <data></data>
タグに保存されます。
<block type="my_block">
<data>16dcb3a4-bd39-11e4-8dfc-aa07a5b093db</data>
<!-- etc... -->
</block>