2016-08-19 20 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