ブロックの状態

ブロック インスタンスには、ユーザーに対する動作を構成するプロパティがいくつかあります。これらはブロック定義で設定できますが、ワークスペース内のブロックを制約してドメインの特定のプロパティ(「開始」イベントが 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>