Gelişmiş özelleştirme

Blockly, ilgili Blockly sınıflarını değiştirerek belirli işlevleri özelleştirmenize olanak tanır.

Değiştirilebilir sınıflar

Aşağıdaki Blockly sınıfları değiştirilebilir:

Blockly sınıfı Arayüz Kayıt türü adı
Blockly.dragging.Dragger Blockly.IDragger blockDragger
Blockly.ConnectionChecker Blockly.IConnectionChecker connectionChecker
Blockly.InsertionMarkerPreviewer Blockly.IConnectionPreviewer connectionPreviewer
Blockly.HorizontalFlyout Blockly.IFlyout flyoutsHorizontalToolbox
Blockly.VerticalFlyout Blockly.IFlyout flyoutsVerticalToolbox
Blockly.MetricsManager Blockly.IMetricsManager metricsManager
Blockly.Toolbox Blockly.IToolbox toolbox
Blockly.VariableMap Blockly.IVariableMap variableMap
Blockly.VariableModel Blockly.IVariableModel --

Bir oluşturucuyu değiştirme hakkında bilgi edinmek için Özel oluşturucular oluşturma başlıklı makaleyi inceleyin.

Alternatif sınıf oluşturma

Bir yedek sınıf oluşturmak için ilgili arayüzdeki işlevleri uygulayın. Bu işlevlerin tümünü yeni bir sınıfta uygulayabilir veya Blockly sınıfını genişletebilir ve yalnızca değiştirmek istediğiniz işlevleri geçersiz kılabilirsiniz. Tek şart, arayüzdeki tüm işlevleri uygulamanız (veya temel sınıf) ve arayüzdeki yorumlarda açıklanan tüm şartlara uymanızdır.

Yazım denetleyicisine belirli bir arayüzü uyguladığınızı belirtmek için sınıfınızı @implements {InterfaceName} JSDoc etiketi (JavaScript'te) veya implements anahtar kelimesi (TypeScript'te) ile açıklama ekleyin.

Blockly'ye yedek sınıfınız hakkında bilgi verme

Değiştirme sınıfınız hakkında Blockly'ye bilgi vermenin iki yolu vardır: sınıfı türünün varsayılan sınıfı olarak kaydetme (tercih edilen yöntem) veya plugins yapılandırma seçeneğini kullanarak sınıfı yerleştirme.

Değiştirilen sınıfınızı varsayılan olarak kaydetme

Blockly'ye yedek sınıfınız hakkında bilgi vermenin tercih edilen yolu, bu sınıfı türü için varsayılan olarak kaydetmektir. Bunu yapmak için Blockly.registry.register işlevini Blockly.registry.DEFAULT adıyla çağırın ve opt_allowOverrides parametresini true olarak ayarlayın.

Blockly.registry.register(
  Blockly.registry.Type.VARIABLE_MODEL,
  Blockly.registry.DEFAULT,
  CustomVariableModel,
  true,
);

Değiştirme sınıfınızı yerleştirin

Ayrıca plugins yapılandırma seçeneğini kullanarak da değiştirme sınıfları ekleyebilirsiniz. Bu, kayıt türü adlarını özellik adları, yedek sınıfları veya kayıtlı adları da özellik değerleri olarak kullanan bir nesnedir.

(plugins özelliğinin adına rağmen sınıfınızın, Blockly'yı genişletmek için kullanılan eklentiler gibi npm üzerinden paketlenip dağıtılması gerekmez.)

Değiştirilen sınıfınızı Blockly.inject'ya aktarın:

Blockly.inject('blocklyDiv', {
  plugins: {
    'metricsManager': CustomMetricsManagerClass
  }
}

Alternatif olarak, sınıfınızı Blockly.registry.register kullanarak kaydedebilir ve kaydedilen adı Blockly.inject'ye iletebilirsiniz. Yapılandırma seçeneklerinizi saf JSON olarak depoluyorsanız bu özellik kullanışlıdır.

Blockly.registry.register(Blockly.registry.Type.METRICS_MANAGER, 'YOUR_NAME', CustomMetricsManagerClass);

Blockly.inject('blocklyDiv', {
  plugins: {
    'metricsManager': 'YOUR_NAME'
  }
}