2016-09-15 3 views
0

Je suis nouveau à bloc et je joue autour de la création de blocs personnalisés.Imbrication de blocs blocs personnalisés en boucles et la génération du code

J'ai créé un nouveau fichier (move.js) dans le dossier des blocs et j'ai créé des blocs personnalisés. Ils ont tous une structure similaire, comme celui ci-dessous

Blockly.Blocks['move_forward'] = { 
    init: function() { 
    this.appendDummyInput() 
     .appendField("Move Forward"); 
    this.appendDummyInput() 
     .appendField(new Blockly.FieldImage("http://iosites.org/robotino/front.png", 20, 20, "Forward")); 
    this.setInputsInline(true); 
    this.setPreviousStatement(true, null); 
    this.setNextStatement(true, null); 
    this.setColour(120); 
    this.setTooltip(''); 
    this.setHelpUrl('http://www.example.com/'); 
    } 
}; 

Puis j'ai créé un nouveau fichier (move.js) dans les générateurs/javascript dossier et il ai écrit des générateurs très simples pour les blocs (ils reviennent seulement lettre). Les blocs fonctionnent bien et renvoient le texte auquel ils sont supposés lorsqu'ils sont empilés à l'extérieur des boucles. Mais quand je les niche à l'intérieur d'une répétition ou d'une boucle, il se passe quelque chose et il n'y a rien de retour. Je l'ai fait quelques tests et je pense que le problème se produit lorsque le

Blockly.JavaScript.statementToCode 

est appelé à l'intérieur du générateur de répétition pour mes blocs personnalisés.

Répondre

0

Difficile à dire, mais les générateurs revient généralement soit

return code + '\n'; 

ou

return [code, Blockly.JavaScript.ORDER_ATOMIC]; 

sur la base du bloc (si elle retourne quelque chose ou fait quelque chose). Vous générez (et renvoyez) un tableau sans l'ordre (au lieu de simplement return 'F;';) ... pas sûr, mais peut-être que cela cause le problème.