sound_blocks.js
3.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
Blockly.common.defineBlocksWithJsonArray([
{
"type": "play_sound",
"message0": "Play %1",
"args0": [
{
"type": "field_dropdown", // 下拉框
"name": "VALUE",
"options": [ // 声音选项
["C4", "sounds/c4.m4a"],
["D4", "sounds/d4.m4a"],
["E4", "sounds/e4.m4a"],
["F4", "sounds/f4.m4a"],
["G4", "sounds/g4.m4a"]
]
}
],
"previousStatement": null,
"nextStatement": null,
"colour": 355
}
]);
javascript.javascriptGenerator.forBlock['play_sound'] = function(block) {
let value = '\'' + block.getFieldValue('VALUE') + '\'';
return 'MusicMaker.queueSound(' + value + ');\n'; // 调用MusicMaker.queueSound函数
};
Blockly.Blocks['ZE3P_led'] = {
init: function () {
this.jsonInit({
"message0": "%1",
"args0": [
{
"type": "field_icon_dropdown",
"name": "COLOR",
"options": [
{
src: Blockly.mainWorkspace.options.pathToMedia + 'icons/set-led_coral.svg',
width: 48,
height: 48,
value: 'Red'
},
{
src: Blockly.mainWorkspace.options.pathToMedia + 'icons/set-led_green.svg',
width: 48,
height: 48,
value: 'Green'
},
{
src: Blockly.mainWorkspace.options.pathToMedia + 'icons/set-led_blue.svg',
width: 48,
height: 48,
value: 'Blue'
},
{
src: Blockly.mainWorkspace.options.pathToMedia + 'icons/set-led_orange.svg',
width: 48,
height: 48,
value: 'Orange'
},
{
src: Blockly.mainWorkspace.options.pathToMedia + 'icons/set-led_yellow.svg',
width: 48,
height: 48,
value: 'Yellow'
},
{
src: Blockly.mainWorkspace.options.pathToMedia + 'icons/set-led_white.svg',
width: 48,
height: 48,
value: 'White'
},
],
}
],
"outputShape": Blockly.OUTPUT_SHAPE_ROUND,
"output": "String",
"extensions": ["colours_looks"]
});
}
}
// ZE3P LED显示颜色
Blockly.Blocks['ZE3P_led_set_color'] = {
init: function () {
this.jsonInit({
"message0": "%1%2",
"args0": [
{
"type": "field_image",
"src": Blockly.mainWorkspace.options.pathToMedia + "/extensions/ZE3P.png",
"width": 24,
"height": 24
},
{
"type": "field_vertical_separator"
}
],
"message1": "设置彩灯 %1 显示 %2 ",
"args1": [
{
"type": "field_pin_dropdown",
"name": "INTERFACE",
"options": Blockly.Blocks.ZE3PInterfaceOptions,
},
{
"type": "input_value",
"name": "COLOR",
}
],
"category": Blockly.Categories.looks,
"extensions": ["colours_looks", "shape_statement"]
});
}
};
// LED颜色
Blockly.Python['ZE3P_led'] = function (block) {
let color = block.getFieldValue('COLOR') || 0;
const code = "LedColor." + color;
return [code, Blockly.Python.ORDER_ATOMIC];
};
// LED显示颜色
Blockly.Python['ZE3P_led_set_color'] = function (block) {
const pin = block.getFieldValue('INTERFACE') || "";
const color = Blockly.Python.valueToCode(block, 'COLOR', Blockly.Python.ORDER_ATOMIC) || "";
return `led.set_color(Interface.${pin}, ${color})\n`;
};