Javascript 谷歌块更新输入类型
我目前正试图在我的一个项目中使用Google Blockly(可视代码编辑器)。下面的示例显示了一个带有多个输入的“块”。我想做的是,让一个块根据下拉字段选择为自己添加另一个输入。这是可行的,但输入总是断开到新行。我可以在线设置,但我不喜欢它的外观。你知道如何做到这一点吗 提前感谢, 克里斯塔 代码:Javascript 谷歌块更新输入类型,javascript,blockly,Javascript,Blockly,我目前正试图在我的一个项目中使用Google Blockly(可视代码编辑器)。下面的示例显示了一个带有多个输入的“块”。我想做的是,让一个块根据下拉字段选择为自己添加另一个输入。这是可行的,但输入总是断开到新行。我可以在线设置,但我不喜欢它的外观。你知道如何做到这一点吗 提前感谢, 克里斯塔 代码: 在Blockly中,您可以将所有输入设置为内联输入,或者将所有输入设置为后跟换行(“外部”)。不支持仅内联某些输入。请参阅JSON块定义中的方法(或inlineInputs)我进行了更多的研究和测
在Blockly中,您可以将所有输入设置为内联输入,或者将所有输入设置为后跟换行(“外部”)。不支持仅内联某些输入。请参阅JSON块定义中的方法(或
inlineInputs
)我进行了更多的研究和测试,得出的结论是,由于该框架的工作方式,不可能实现我想要的功能(您可以更改本机代码,但这对我来说太高级了)。既然我不再需要它了,我会把它标记为关闭。你好。我想知道如何在某个位置追加输入。当前,mutator总是在块的末尾添加输入。如何在一些字段之间添加输入?虽然我不再处理这个问题,但这是我自己发现的。我希望在不中断新线的情况下实现“外部”输入的外观。我认为这是不可能的(如果不更改原始代码)
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');
}
}
};