Kolom warna menyimpan string sebagai value
, dan string sebagai text
. value
adalah string dengan format #rrggbb
, sedangkan text
-nya mungkin berupa string
dengan format #rgb
jika memungkinkan.
Kolom warna
Kolom warna dengan editor terbuka
Kolom warna di blok yang diciutkan
yang Dipicu oleh Tren
JSON
{
"type": "example_colour",
"message0": "colour: %1",
"args0": [
{
"type": "field_colour",
"name": "FIELDNAME",
"colour": "#ff4040",
"colourOptions":
['#ff4040', '#ff8080', '#ffc0c0',
'#4040ff', '#8080ff', '#c0c0ff'],
"colourTitles":
['dark pink', 'pink', 'light pink',
'dark blue', 'blue', 'light blue'],
"columns": 3
}
]
}
JavaScript
Blockly.Blocks['example_colour'] = {
init: function() {
this.appendDummyInput()
.appendField('colour:')
.appendField(new Blockly.FieldColour('#ff4040',
{
"colourOptions":
['#ff4040', '#ff8080', '#ffc0c0',
'#4040ff', '#8080ff', '#c0c0ff'],
"colourTitles":
['dark pink', 'pink', 'light pink',
'dark blue', 'blue', 'light blue'],
"columns": 3
}), 'FIELDNAME');
}
};
Konstruktor warna mengambil hal berikut:
value
opsional- validator opsional
- peta opsi opsional, termasuk:
colourOptions
colourTitles
columns
value
harus berupa string dalam format #rrggbb
. Jika tidak ada value
yang diberikan atau value
yang diberikan tidak valid, entri pertama dalam array warna default akan digunakan.
Opsi berikut juga dapat disetel di JSON:
colourOptions
colourTitles
columns
Atau dapat disetel menggunakan hook JavaScript.
Serialisasi
JSON
JSON untuk kolom warna terlihat seperti berikut:
{
"fields": {
"FIELDNAME": "#ff0000"
}
}
Dengan FIELDNAME
adalah string yang merujuk ke kolom warna, dan
nilainya adalah nilai yang akan diterapkan ke kolom tersebut. Nilai ini
mengikuti aturan yang sama dengan nilai konstruktor.
XML
XML untuk kolom warna terlihat seperti berikut:
<field name="FIELDNAME">#ff0000</field>
Atribut name
node field
berisi string yang merujuk ke kolom
warna, dan teks dalam node adalah nilai yang akan diterapkan ke kolom. Nilai teks
bagian dalam mengikuti aturan yang sama dengan nilai konstruktor.
Perlu diketahui bahwa setelah di-deserialisasi dan diserialisasi ulang, semua nilai teks bagian dalam
akan memiliki format #rrggbb
. Hal ini terkadang penting saat
membedakan ruang kerja.
Penyesuaian
Opsi editor
Fungsi setColours
dapat digunakan untuk menyetel opsi warna kolom warna. Fungsi ini memerlukan
array string warna, yang harus ditentukan dalam format #rrggbb
, dan
array tooltip opsional. Jika array tooltip tidak disediakan, array tooltip default akan digunakan.
Tooltip dan warna dicocokkan berdasarkan indeks array, bukan berdasarkan nilai. Jika array warna lebih panjang dari array tooltip, tooltip untuk warna tambahan akan menjadi nilai #rrggbb
.
Fungsi setColumns menetapkan jumlah kolom di pemilih warna.
JSON
{
"type": "example_colour",
"message0": "colour: %1",
"args0": [
{
"type": "field_colour",
"name": "COLOUR",
"colour": "#ff4040"
}
],
"extensions": ["set_colours_extension"]
}
Blockly.Extensions.register('set_colours_extension',
function() {
var field = this.getField("COLOUR");
field.setColours(
['#ff4040', '#ff8080', '#ffc0c0',
'#4040ff', '#8080ff', '#c0c0ff'],
['dark pink', 'pink', 'light pink',
'dark blue', 'blue', 'light blue']);
field.setColumns(3);
});
Hal ini dilakukan menggunakan ekstensi JSON.
JavaScript
Blockly.Blocks['example_colour'] = {
init: function() {
var field = new Blockly.FieldColour('#ff4040');
field.setColours(
['#ff4040', '#ff8080', '#ffc0c0',
'#4040ff', '#8080ff', '#c0c0ff'],
['dark pink', 'pink', 'light pink',
'dark blue', 'blue', 'light blue']);
field.setColumns(3);
this.appendDummyInput()
.appendField('colour:')
.appendField(field, 'COLOUR');
}
};
Secara opsional, warna, tooltip, dan kolom default dapat diganti secara global. Ini berarti mereka akan memengaruhi semua kolom warna, bukan kolom tertentu.
Blockly.FieldColour.COLOURS = [
'#ff4040', '#ff8080', '#ffc0c0',
'#4040ff', '#8080ff', '#c0c0ff'];
Blockly.FieldColour.TITLES = [
'dark pink', 'pink', 'light pink',
'dark blue', 'blue', 'light blue'];
Blockly.FieldColour.COLUMNS = 3;
Membuat validator warna
Nilai kolom warna adalah string format #rrggbb
, sehingga setiap validator harus
menerima string format #rrggbb
, dan menampilkan string format #rrggbb
, null
,
atau undefined
.
Berikut adalah contoh validator yang mengubah warna blok agar sesuai dengan warna kolom.
function(newValue) {
this.getSourceBlock().setColour(newValue);
return newValue;
}