現在、私のプロジェクトでGoogle Blockly(ビジュアルコードエディタ)を使用しようとしています。以下の例は、いくつかの入力を持つ「ブロック」を示しています。私がしようとしているのは、ブロックにドロップダウンフィールドの選択に基づいて別の入力を追加することです。これは機能しますが、入力は常に新しい行に改行されます。私はそれをインラインに設定することができますが、私はその外観が気に入らないのです。あなたはそれを達成する方法を知っていますか?事前にGoogle Blockly update入力タイプ
おかげで、
Chrisstar
コード:
Blockly.Blocks['page_settings'] = {
init: function() {
var PROPERTIES =
[["Nothing", "NONE"], ["Show Text Component", "SHOW_TEXT"], ["Show Item", "SHOW_ITEM"]];
this.setColour(65);
this.appendValueInput("TEXT")
.setCheck("String")
.appendField("Text");
this.appendValueInput("FORMAT")
.setCheck("mc_text_format")
.appendField("Format");
var dropdown = new Blockly.FieldDropdown(PROPERTIES, function(option) {
this.sourceBlock_.updateShape_(option);
});
this.appendDummyInput()
.appendField("Hover Event")
.appendField(dropdown, 'HOVER_EVENT_TYPE');
this.setInputsInline(false);
this.setOutput(true, 'Boolean');
this.setTooltip('Blockly.Msg.MATH_IS_TOOLTIP');
},
mutationToDom: function() {
var container = document.createElement('mutation');
var itemInput = this.getFieldValue('HOVER_EVENT_TYPE');
container.setAttribute('hover_type', itemInput);
return container;
},
domToMutation: function(xmlElement) {
var itemInput = xmlElement.getAttribute('hover_type');
this.updateShape_(itemInput);
},
updateShape_: function(input_type) {
// Add or remove a Value Input.
var inputExists = this.getInput('HOVER_INPUT');
if (input_type == 'SHOW_TEXT') {
if (!inputExists) {
this.appendValueInput('HOVER_INPUT')
.setCheck('mc_text_component');
}
}else if(input_type == 'SHOW_ITEM') {
if (!inputExists) {
this.appendValueInput('HOVER_INPUT')
.setCheck('mc_item');
}
}else if(inputExists) {
this.removeInput('HOVER_INPUT');
}
}
};
私はもう少し研究し、テストしたところ、このフレームワークの仕組みのために、自分が望むことをすることはできません(ネイティブコードを変更することはできますが、それはあまりにも進んでいます)。私はもうこれを必要としないので、これを閉じているとフラグを立てる。 – Chrisstar