Hazır bloklar

Bir araç kutusundaki blokların durumunu yapılandırabilirsiniz (önceden ayarlayabilirsiniz). Örneğin, bir alanı varsayılan değere ayarlayabilir veya iki bloğu birbirine bağlayabilirsiniz. Ayrıca, çocuk blokları için varsayılan olarak kullanılan gölge bloklar da oluşturabilirsiniz.

Örnekler

Aşağıda, hazır bloklara ilişkin bazı örnekler verilmiştir.

Hazır ayar alan değeriyle engelleme

İşte math_number alanı varsayılan 0 yerine 42 sayısını gösteren bir blok:

Değeri önceden 42 olarak ayarlanmış bir sayı bloğu.

Bu alanı ayarlayan bir araç kutusu:

JSON

{
 "kind": "flyoutToolbox",
 "contents": [
   {
     "kind": "block",
     "type": "math_number",
     "fields": {
       "NUM": 42
     }
   },
 ]
}

XML

<xml id="toolbox" style="display: none">
 <block type="math_number">
   <field name="NUM">42</field>
 </block>
</xml>

Önceden bağlanmış bloklar

Aşağıda, kendisine bağlı üç math_number bloğu olan bir controls_for bloğu verilmiştir:

&quot;count with i from value to value by value&quot; (değerden değere değer kadar artarak i ile say) bloğu. Üç değer girişi, 1, 10 ve 1 değerlerine sahip sayı bloklarına bağlanır.

Bu blokları önceden bağlayan bir araç kutusu:

JSON

{
 "kind": "flyoutToolbox",
 "contents": [
   {
     "kind": "block",
     "type": "controls_for",
     "inputs": {
       "FROM": {
         "block": {
           "type": "math_number",
           "fields": {
             "NUM": 1
           }
         }
       },
       "TO": {
         "block": {
           "type": "math_number",
           "fields": {
             "NUM": 10
           }
         }
       },
       "BY": {
         "block": {
           "type": "math_number",
           "fields": {
             "NUM": 1
           }
         }
       },
     }
   },
 ]
}

XML

<xml id="toolbox" style="display: none">
 <block type="controls_for">
   <value name="FROM">
     <block type="math_number">
       <field name="NUM">1</field>
     </block>
   </value>
   <value name="TO">
     <block type="math_number">
       <field name="NUM">10</field>
     </block>
   </value>
   <value name="BY">
     <block type="math_number">
       <field name="NUM">1</field>
     </block>
   </value>
 </block>
</xml>

Devre dışı bırakılan bloklar

Devre dışı bırakılan bloklar araç kutusundan sürüklenemez. Bloklar, isteğe bağlı disabled özelliği kullanılarak ayrı ayrı devre dışı bırakılabilir.

Üç bloklu bir açılır menü. Üçüncü blok devre dışı bırakılmış ve gri renkte gösteriliyor.

JSON

{
 "kind": "flyoutToolbox",
 "contents": [
   {
     "kind": "block",
     "type":"math_number"
   },
   {
     "kind": "block",
     "type": "math_arithmetic"
   },
   {
     "kind": "block",
     "type": "math_single",
     "disabled": "true"
   }
 ]
}

XML

<xml id="toolbox" style="display: none">
 <block type="math_number"></block>
 <block type="math_arithmetic"></block>
 <block type="math_single" disabled="true"></block>
</xml>

Ayrıca, setDisabledReason kullanarak bir bloğu programatik olarak devre dışı bırakabilir veya etkinleştirebilirsiniz.

Engellemelerinizi yapılandırma

Bir araç kutusundaki blokları, çalışma alanında yapılandırabileceğiniz şekilde yapılandırabilirsiniz. Örneğin, alan değerlerini ayarlayabilir, blokları değer veya ifade girişlerine bağlayabilir, yorum ekleyebilir ve blokları daraltabilir ya da devre dışı bırakabilirsiniz. Bu, araç kutuları, çalışma alanlarının blokları serileştirmek için kullandığı kodu kullandığından mümkündür.

Bu, blok yapılandırması oluşturmanın da kolay olduğu anlamına gelir. Bloğunuzu bir çalışma alanına yükleyin, istediğiniz gibi yapılandırın ve konsolda aşağıdaki kodu çalıştırarak serileştirin.

JSON

console.log(Blockly.serialization.workspaces.save(Blockly.getMainWorkspace()));

XML

console.log(Blockly.Xml.workspaceToDom(Blockly.getMainWorkspace()));

Ardından yapılandırma kodunu kopyalayıp araç kutunuza yapıştırabilirsiniz. Araç kutusu tarafından yoksayılan x, y ve id özelliklerini kaldırdığınızdan emin olun.

Değişken alanlar

Değişken alanlar, araç kutusunda olduklarında seri hale getirildiklerinden farklı şekilde belirtilmesi gerekebilir.

Özellikle, değişken alanlar normalde JSON'a serileştirildiğinde yalnızca temsil ettikleri değişkenin kimliğini içerir. Bunun nedeni, değişkenin adının ve türünün ayrı olarak serileştirilmesidir. Ancak araç kutularında bu bilgiler yer almadığından doğrudan değişken alanına eklenmesi gerekir.

{
  "kind": "flyoutToolbox",
  "content": [
    {
      "kind": "block",
      "type": "controls_for",
      "fields": {
        "VAR": {
          "name": "index",
          "type": "Number"
        }
      }
    }
  ]
}

Gölge blokları

Gölge bloklar, çeşitli işlevleri yerine getiren yer tutucu bloklardır:

  • Üst bloklarının varsayılan değerlerini gösterirler.
  • Kullanıcıların bir sayı veya dize bloğu getirmesine gerek kalmadan doğrudan değer yazmasına olanak tanır.
  • Normal bir engellemenin aksine, kullanıcı bunların üzerine bir engelleme bırakırsa değiştirilirler.
  • Kullanıcıya beklenen değer türü hakkında bilgi verir.

Gölge bloğu oluşturmak için block özelliği veya <block> etiketi yerine shadow özelliğini (JSON) ya da <shadow> etiketini (XML) kullanın. Örneğin, burada kendisine bağlı iki math_number gölge bloğu olan bir math_arithmetic bloğu gösterilmektedir:

Artı operatörünün seçildiği bir operatör açılır listesiyle ayrılmış iki değer girişi içeren bir &quot;math_arithmetic&quot; bloğu. Girilen her değer, başka bir bloğun yerine geçebileceğini göstermek için gri renkte olan bir gölge sayı bloğu içerir.

Aşağıda, bu gölge blokları kullanan bir araç kutusu verilmiştir:

JSON

{
 "kind": "flyoutToolbox",
 "contents": [
   {
     "kind": "block",
     "type": "math_arithmetic",
     "fields": {
       "OP": "ADD"
     },
     "inputs": {
       "A": {
         "shadow": {
           "type": "math_number",
           "fields": {
             "NUM": 1
           }
         }
       },
       "B": {
         "shadow": {
           "type": "math_number",
           "fields": {
             "NUM": 1
           }
         }
       }
     }
   },
 ]
}

XML

<xml id="toolbox" style="display: none">
 <block type="math_arithmetic">
   <field name="OP">ADD</field>
   <value name="A">
     <shadow type="math_number">
       <field name="NUM">1</field>
     </shadow>
   </value>
   <value name="B">
     <shadow type="math_number">
       <field name="NUM">1</field>
     </shadow>
   </value>
 </block>
</xml>