2016-08-19 123 views
1

我目前正在嘗試在我的一個項目中使用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'); 
    } 
    } 
}; 
+0

我研究和測試了一下,得出的結論是,由於這個框架的工作方式,不可能做我想做的事(你可以改變本地代碼,但這對我來說太高級了)。因爲我不再需要它了,所以會標記爲關閉。 – Chrisstar

回答

1

在Blockly,您可以設置全部投入到內聯或全部後跟一個換行符(「外「)。沒有支持只有一些輸入內聯。請參閱setInputsInline(..)方法(或JSON塊定義中的inlineInputs)。

+0

雖然我不再爲此工作,但這是我自己想出來的。我想在不打破新的界限的情況下實現「外部」輸入的外觀。我認爲這是不可能的(不改變原始代碼) – Chrisstar