Mevcut bir alanı genişletme

Mevcut bir alanı genişletmek için yerleşik bir alanı (ör.FieldTextInput, FieldColour) alt sınıflandırmanız ve ardından bu alanın bir bölümünü ihtiyaçlarınıza göre değiştirmeniz gerekir. Bir alanın değiştirebileceğiniz bazı bölümleri şunlardır:

Yerleşik herhangi bir alandan davranış gerektirmeyen bir özel alan oluşturmak istiyorsanız Field alt sınıfını alt olarak sınıflandırmanız gerekir.

Sık kullanılan uzantılar

Çoğu özel alan, aşağıdaki üç türden birini genişletir:

  • Metin Girişi: Kullanıcılarınızın alanınıza yazmasını istiyorsanız FieldTextInput özelliğini genişletmeniz gerekir.
  • Sayı: Bir numarayı depolamak istiyorsanız FieldNumber sayısını artırmanız gerekir.
  • Açılır liste: Bir açılır liste oluşturmak istiyor ancak varsayılan dize veya resim modelinden farklı bir modeli depolamasını istiyorsanız FieldDropdown öğesini genişletmeniz gerekir.
    • Dikkat: FieldDropdown öğesinin süresini uzatmadan önce, açılır menü alanının özelleştirme seçeneklerinin ihtiyaçlarınızı karşılayıp karşılamadığını kontrol edin.

Belirli durumlarda farklı bir alan türünü genişletmek isteyebilirsiniz. Örneğin FieldLabelSerializable, FieldLabel aralığını genişletir.

Alt Sınıflandırma

import * as Blockly from 'blockly';

export class MyCustomTextField extends Blockly.FieldTextInput {

  constructor(value, validator, config) {
    super(value, validator, config);
  }
}

Bir alanın alt sınıfının kurucusu, özel alan oluşturucuya çok benzer. Alt oluşturucunun imzası genellikle süper oluşturucunun imzasıyla eşleşmelidir.

JSON ve kayıt

Alanı bir kez de kaydetmeniz gerekir:

Blockly.fieldRegistry.register('my_custom_text_field', MyCustomTextField);

ve JSON biçimiyle çalışması için sınıfta fromJson özelliğinin bir uygulamasını sağlayın:

static fromJson(options) {
  const value = Blockly.utils.parsing.replaceMessageReferences(options.value);
  return new MySubclassName(value);
}

Alan kaydetme hakkında daha fazla bilgi için Özel Alan Oluşturma başlıklı makalenin JSON ve kayıt bölümüne bakın.