Skip to content

Commit 84e2450

Browse files
add blockly block 'rectangle'
1 parent 3f7088d commit 84e2450

File tree

3 files changed

+49
-2
lines changed

3 files changed

+49
-2
lines changed

public/bollockly.html

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<script src="lib/blockly/blocks_compressed.js"></script>
55
<script src="lib/blockly/msg/js/en.js"></script>
66
<script src="lib/blockly/javascript_compressed.js"></script>
7+
<script src="rectangle.js"></script>
78
<script src="square.js"></script>
89
<script src="bollockly.js"></script>
910

@@ -19,6 +20,7 @@
1920
<block type="text"></block>
2021
<block type="text_print"></block>
2122
<block type="square"></block>
23+
<block type="rectangle"></block>
2224
</xml>
2325
<textarea id="textarea"></textarea>
2426
<button onclick="execute()">exec</button>

public/rectangle.js

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#h3t96r
2+
3+
Blockly.Blocks['rectangle'] = {
4+
init: function() {
5+
this.appendValueInput("x")
6+
.setCheck("Number")
7+
.appendField("x");
8+
this.appendValueInput("y")
9+
.setCheck("Number")
10+
.appendField("y");
11+
this.appendValueInput("width")
12+
.setCheck("Number")
13+
.appendField("width");
14+
this.appendValueInput("height")
15+
.setCheck("Number")
16+
.appendField("height");
17+
this.setInputsInline(false);
18+
this.setPreviousStatement(true);
19+
this.setNextStatement(true);
20+
this.setTooltip('draw rectangle');
21+
this.setHelpUrl('http://www.example.com/');
22+
}
23+
};
24+
25+
Blockly.JavaScript['rectangle'] = function(block) {
26+
var value_x = Blockly.JavaScript.valueToCode(block, 'x', Blockly.JavaScript.ORDER_ATOMIC);
27+
var value_y = Blockly.JavaScript.valueToCode(block, 'y', Blockly.JavaScript.ORDER_ATOMIC);
28+
var value_width = Blockly.JavaScript.valueToCode(block, 'width', Blockly.JavaScript.ORDER_ATOMIC);
29+
var value_height = Blockly.JavaScript.valueToCode(block, 'height', Blockly.JavaScript.ORDER_ATOMIC);
30+
31+
var code = "ctx.fillRect(" + value_x + "," + value_y + "," + value_width + "," + value_height + ");";
32+
return code;
33+
};
34+
35+
function makeRectangle (){
36+
return function (context){
37+
context.rotate(this.rotation* this.toRadians);
38+
context.fillStyle = "rgb(__COLOR__,20,"+Math.floor(Math.random()*255)+")";
39+
var x = Math.floor(Math.random()*context.canvas.width);
40+
var y = Math.floor(Math.random()*context.canvas.height);
41+
context.fillRect(x, y, 50, 50);
42+
};
43+
}
44+

public/square.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,17 @@ Blockly.Blocks['square'] = {
99
this.setPreviousStatement(true);
1010
this.setNextStatement(true);
1111
this.setColour(330);
12-
this.setTooltip('');
12+
this.setTooltip('squares');
1313
this.setHelpUrl('http://www.example.com/');
14+
// this.setOutput(true, 'Number');
1415
}
1516
};
1617

1718
Blockly.JavaScript['square'] = function(block) {
1819
var value_color = Blockly.JavaScript.valueToCode(block, 'COLOR', Blockly.JavaScript.ORDER_ATOMIC);
1920
var value_angle = Blockly.JavaScript.valueToCode(block, 'angle', Blockly.JavaScript.ORDER_ATOMIC);
2021
// TODO: Assemble JavaScript into code variable.
21-
var code = "("+makesquare().toString().replace("__COLOR__", value_color)+")(ctx)";
22+
var code = "("+makesquare().toString().replace("__COLOR__", value_color)+")(ctx);";
2223
return code;
2324
};
2425

0 commit comments

Comments
 (0)