कलर फ़ील्ड में स्ट्रिंग, value
के तौर पर और स्ट्रिंग text
के तौर पर सेव होती है. इसका value
, #rrggbb
फ़ॉर्मैट वाली एक स्ट्रिंग है. हालांकि, अगर हो सके, तो text
, #rgb
फ़ॉर्मैट वाली स्ट्रिंग हो सकती है.
कलर फ़ील्ड
कलर फ़ील्ड और एडिटर का इस्तेमाल
छोटे किए गए ब्लॉक पर कलर फ़ील्ड
शॉर्ट वीडियो
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');
}
};
कलर कंस्ट्रक्टर को इन चीज़ों का ध्यान रखना चाहिए:
- एक वैकल्पिक
value
- एक वैकल्पिक validator
- विकल्पों का एक वैकल्पिक मैप, जिसमें ये शामिल हैं:
colourOptions
colourTitles
columns
value
, #rrggbb
फ़ॉर्मैट में एक स्ट्रिंग होनी चाहिए. अगर कोई value
नहीं दिया गया है या दिया गया value
अमान्य है, तो डिफ़ॉल्ट कलर कलेक्शन की पहली एंट्री का इस्तेमाल किया जाएगा.
इन विकल्पों को JSON में भी सेट किया जा सकता है:
colourOptions
colourTitles
columns
इसके अलावा, JavaScript हुक का इस्तेमाल करके भी इन्हें सेट किया जा सकता है.
सीरियलाइज़ेशन
JSON
कलर फ़ील्ड के लिए JSON, ऐसा दिखता है:
{
"fields": {
"FIELDNAME": "#ff0000"
}
}
जहां FIELDNAME
एक स्ट्रिंग है, जो किसी कलर फ़ील्ड के बारे में बताती है और
वैल्यू वह वैल्यू है जिसे फ़ील्ड पर लागू किया जाना है. वैल्यू,
कंस्ट्रक्टर की वैल्यू के समान नियमों का पालन करती है.
XML
कलर फ़ील्ड के लिए एक्सएमएल ऐसा दिखता है:
<field name="FIELDNAME">#ff0000</field>
field
नोड के name
एट्रिब्यूट में कलर फ़ील्ड का रेफ़रंस देने वाली स्ट्रिंग होती है. नोड का अंदरूनी टेक्स्ट, फ़ील्ड पर लागू की जाने वाली वैल्यू है. इनर टेक्स्ट वैल्यू, कंस्ट्रक्टर की वैल्यू के समान नियमों का पालन करती है.
ध्यान दें कि डीसीरियलाइज़्ड (पार्स) होने और क्रम से लगाने के बाद, सभी अंदरूनी टेक्स्ट वैल्यू #rrggbb
फ़ॉर्मैट में होंगी. अलग-अलग फ़ाइल फ़ोल्डर में ऐसा करना अहम होता है.
पसंद के मुताबिक बनाएं
संपादक विकल्प
setColours फ़ंक्शन का इस्तेमाल, कलर फ़ील्ड के कलर के विकल्पों को सेट करने के लिए किया जा सकता है. यह कई तरह की कलर स्ट्रिंग का इस्तेमाल करता है, जिन्हें #rrggbb
फ़ॉर्मैट में तय किया जाना चाहिए. साथ ही, यह टूलटिप के वैकल्पिक कलेक्शन में भी शामिल होता है. अगर टूलटिप कलेक्शन नहीं दिया गया है, तो डिफ़ॉल्ट
टूलटिप ऐरे का इस्तेमाल किया जाएगा.
टूलटिप और रंगों का मिलान, कलेक्शन इंडेक्स के आधार पर किया जाता है, न कि वैल्यू के आधार पर. अगर
कलर कलेक्शन, टूलटिप के कलेक्शन से ज़्यादा है, तो अन्य रंगों के लिए टूलटिप
उनकी #rrggbb
वैल्यू होगी.
setColumns फ़ंक्शन कलर पिकर में कॉलम की संख्या सेट करता है.
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);
});
ऐसा 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');
}
};
इसके अलावा, डिफ़ॉल्ट कलर, टूलटिप, और कॉलम को दुनिया भर में बदला जा सकता है. इसका मतलब है कि वे किसी खास फ़ील्ड के बजाय, सभी रंगों वाले फ़ील्ड पर असर डालेंगे.
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;
रंग की पुष्टि करने वाला प्रोग्राम बनाया जा रहा है
कलर फ़ील्ड की वैल्यू, #rrggbb
फ़ॉर्मैट की स्ट्रिंग होती है. इसलिए, पुष्टि करने वाले सभी टूल को #rrggbb
फ़ॉर्मैट की स्ट्रिंग स्वीकार करनी होगी और #rrggbb
फ़ॉर्मैट स्ट्रिंग, null
या undefined
रिटर्न करना होगा.
यहां पुष्टि करने वाले एक ऐसे प्रोग्राम का उदाहरण दिया गया है जो फ़ील्ड के रंग से मेल खाने के लिए, ब्लॉक का रंग बदलता है.
function(newValue) {
this.getSourceBlock().setColour(newValue);
return newValue;
}