Files
2024-07-19 10:16:00 +08:00

653 lines
23 KiB
JavaScript

import * as Blockly from 'blockly/core';
const ACTUATOR_HUE = 100; //'#b574c2';
export const microbit_music_play_built_in = {
init: function () {
this.jsonInit({
"colour": ACTUATOR_HUE,
"nextStatement": null,
"previousStatement": null,
"inputsInline": true,
"helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/music.html#built-in-melodies",
"message0": Blockly.Msg.MIXLY_MICROBIT_Play_built_in_melody,
"args0": [{
"name": "melody",
"options": [["DADADADUM", "DADADADUM"], ["ENTERTAINER", "ENTERTAINER"], ["PRELUDE", "PRELUDE"], ["ODE", "ODE"], ["NYAN", "NYAN"], ["RINGTONE", "RINGTONE"], ["FUNK", "FUNK"], ["BLUES", "BLUES"], ["BIRTHDAY", "BIRTHDAY"], ["WEDDING", "WEDDING"], ["FUNERAL", "FUNERAL"], ["PUNCHLINE", "PUNCHLINE"], ["PYTHON", "PYTHON"], ["BADDY", "BADDY"], ["CHASE", "CHASE"], ["BA_DING", "BA_DING"], ["WAWAWAWAA", "WAWAWAWAA"], ["JUMP_UP", "JUMP_UP"], ["JUMP_DOWN", "JUMP_DOWN"], ["POWER_UP", "POWER_UP"], ["POWER_DOWN", "POWER_DOWN"]],
"type": "field_dropdown"
}, {
// "check" : "Number",
"type": "input_value",
"name": "PIN"
}, {
"type": "input_dummy"
}, {
"checked": true,
"type": "field_checkbox",
"name": "wait"
}, {
"type": "input_dummy"
}, {
"checked": false,
"type": "field_checkbox",
"name": "loop"
}
]
});
this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Play_built_in_melody1);
}
};
export const microbit_music_play_built_in_easy = {
init: function () {
this.jsonInit({
"colour": ACTUATOR_HUE,
"nextStatement": null,
"previousStatement": null,
"inputsInline": true,
"helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/music.html#built-in-melodies",
"tooltip": "Play one of the built-in melodies. Indicate if you need to wait before continuing or continuously loop the melody.",
"message0": Blockly.Msg.MIXLY_MICROBIT_Play_built_in_melody_easy,
"args0": [{
"name": "melody",
"options": [["DADADADUM", "DADADADUM"], ["ENTERTAINER", "ENTERTAINER"], ["PRELUDE", "PRELUDE"], ["ODE", "ODE"], ["NYAN", "NYAN"], ["RINGTONE", "RINGTONE"], ["FUNK", "FUNK"], ["BLUES", "BLUES"], ["BIRTHDAY", "BIRTHDAY"], ["WEDDING", "WEDDING"], ["FUNERAL", "FUNERAL"], ["PUNCHLINE", "PUNCHLINE"], ["PYTHON", "PYTHON"], ["BADDY", "BADDY"], ["CHASE", "CHASE"], ["BA_DING", "BA_DING"], ["WAWAWAWAA", "WAWAWAWAA"], ["JUMP_UP", "JUMP_UP"], ["JUMP_DOWN", "JUMP_DOWN"], ["POWER_UP", "POWER_UP"], ["POWER_DOWN", "POWER_DOWN"]],
"type": "field_dropdown"
}, {
// "check" : "Number",
"type": "input_value",
"name": "PIN"
}, {
"type": "input_dummy"
}
]
});
}
};
export const microbit_music_pitch_delay = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendValueInput("PIN", Number)
.appendField(Blockly.Msg.MIXLY_TONE)
.appendField(Blockly.Msg.MIXLY_PIN)
.setCheck(Number);
this.appendValueInput('pitch')
.setCheck(Number)
//.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_FREQUENCY);
this.appendValueInput('duration')
.setCheck(Number)
//.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_DURATION);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_MILLIS)
.appendField(Blockly.Msg.MIXLY_MICROBIT_WAIT);
this.appendDummyInput("")
.appendField(new Blockly.FieldCheckbox(true), 'wait');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE2);
}
};
export const microbit_music_pitch = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendValueInput("PIN", Number)
.appendField(Blockly.Msg.MIXLY_TONE)
.appendField(Blockly.Msg.MIXLY_PIN)
.setCheck(Number);
this.appendValueInput('pitch')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_FREQUENCY);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE);
}
};
export const microbit_music_play_list_of_notes = {
init: function () {
this.jsonInit({
"colour": ACTUATOR_HUE,
"nextStatement": null,
"previousStatement": null,
"inputsInline": true,
"helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/music.html#musical-notation",
"message0": Blockly.Msg.MIXLY_MICROBIT_Play_notes,
"args0": [{
"check": "List",
"type": "input_value",
"name": "notes"
}, {
"type": "input_value",
"name": "PIN"
}, {
"checked": true,
"type": "field_checkbox",
"name": "wait"
}, {
"type": "input_dummy"
}, {
"checked": false,
"type": "field_checkbox",
"name": "loop"
}
]
});
this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Play_notes1);
}
};
export const microbit_music_play_list_of_notes_easy = {
init: function () {
this.jsonInit({
"colour": ACTUATOR_HUE,
"nextStatement": null,
"previousStatement": null,
"inputsInline": true,
"helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/music.html#musical-notation",
"tooltip": "Play a list of notes expressed in the special music language. Indicate if you need to wait before continuing or continuously loop the melody.",
"message0": Blockly.Msg.MIXLY_MICROBIT_Play_notes,
"args0": [{
"check": "List",
"type": "input_value",
"name": "notes"
}, {
"type": "input_value",
"name": "PIN"
}, {
"type": "input_dummy"
}, {
"type": "input_dummy"
}, {
"type": "input_dummy"
}
]
});
}
};
export const microbit_music_reset = {
init: function () {
this.jsonInit({
"colour": ACTUATOR_HUE,
"nextStatement": null,
"previousStatement": null,
"helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/music.html#music.reset",
"message0": Blockly.Msg.MIXLY_MICROBIT_Reset_music
});
this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Reset_music);
}
};
//
export const microbit_music_stop = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendValueInput("PIN")
.appendField(Blockly.Msg.MIXLY_NOTONE)
.appendField(Blockly.Msg.MIXLY_PIN);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_NOTONE);
}
};
export const microbit_music_get_tempo = {
init: function () {
this.jsonInit({
"colour": ACTUATOR_HUE,
"output": "Array",
"helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/music.html#music.get_tempo",
"message0": Blockly.Msg.MIXLY_MICROBIT_Get_current_tempo
});
this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Get_current_tempo);
}
};
export const tone_set_tempo = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendValueInput('TICKS')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_SET_TEMPO)
.appendField(Blockly.Msg.MICROBIT_ACTUATOR_ticks);
this.appendValueInput('BPM')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_SPEED);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_SET_TEMPO1);
}
}
export const speech_say = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendValueInput('VAR')
.setCheck(String)
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MICROBIT_PY_ACTUATOR_SPEECH_SAY, 'say'], [Blockly.Msg.MIXLY_MICROBIT_PY_ACTUATOR_SPEECH_SING, 'sing'], [Blockly.Msg.MIXLY_MICROBIT_PY_ACTUATOR_SPEECH_PRENOUNCE,
'pronounce']]), "MODE");
this.appendValueInput('pitch')
.setCheck(Number)
.appendField(Blockly.Msg.MICROBIT_SPEECH_pitch);
this.appendValueInput('speed')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_SPEED);
this.appendValueInput('mouth')
.setCheck(Number)
.appendField(Blockly.Msg.MICROBIT_SPEECH_mouth);
this.appendValueInput('throat')
.setCheck(Number)
.appendField(Blockly.Msg.MICROBIT_SPEECH_throat);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
var thisBlock = this;
this.setTooltip(function () {
var mode = thisBlock.getFieldValue('MODE');
var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_ACTUATOR_SPEECH;
var mode1 = Blockly.Msg.MIXLY_MICROBIT_TYPE_STRING
var TOOLTIPS = {
'say': Blockly.Msg.MIXLY_MICROBIT_PY_ACTUATOR_SPEECH_SAY,
'sing': Blockly.Msg.MIXLY_MICROBIT_PY_ACTUATOR_SPEECH_SING,
'pronounce': Blockly.Msg.MIXLY_MICROBIT_PY_ACTUATOR_SPEECH_PRENOUNCE
};
return mode0 + TOOLTIPS[mode] + mode1;
});
}
};
// export const speech_sing = {
// init: function () {
// this.setColour(ACTUATOR_HUE);
// this.appendValueInput('VAR')
// .setCheck(String)
// .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_ACTUATOR_SPEECH_SING);
// this.appendValueInput('pitch')
// .setCheck(Number)
// .appendField(Blockly.Msg.MICROBIT_SPEECH_pitch);
// this.appendValueInput('speed')
// .setCheck(Number)
// .appendField(Blockly.Msg.MIXLY_SPEED);
// this.appendValueInput('mouth')
// .setCheck(Number)
// .appendField(Blockly.Msg.MICROBIT_SPEECH_mouth);
// this.appendValueInput('throat')
// .setCheck(Number)
// .appendField(Blockly.Msg.MICROBIT_SPEECH_throat);
// this.setPreviousStatement(true);
// this.setNextStatement(true);
// this.setInputsInline(true);
// }
// };
// export const speech_prenounce = {
// init: function () {
// this.setColour(ACTUATOR_HUE);
// this.appendValueInput('VAR')
// .setCheck(String)
// .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_ACTUATOR_SPEECH_PRENOUNCE);
// this.appendValueInput('pitch')
// .setCheck(Number)
// .appendField(Blockly.Msg.MICROBIT_SPEECH_pitch);
// this.appendValueInput('speed')
// .setCheck(Number)
// .appendField(Blockly.Msg.MIXLY_SPEED);
// this.appendValueInput('mouth')
// .setCheck(Number)
// .appendField(Blockly.Msg.MICROBIT_SPEECH_mouth);
// this.appendValueInput('throat')
// .setCheck(Number)
// .appendField(Blockly.Msg.MICROBIT_SPEECH_throat);
// this.setPreviousStatement(true);
// this.setNextStatement(true);
// this.setInputsInline(true);
// }
// };
export const speech_say_easy = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendValueInput('VAR')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_MICROBIT_PY_ACTUATOR_SPEECH_SAY);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
}
};
export const speech_sing_easy = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendValueInput('VAR')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_MICROBIT_PY_ACTUATOR_SPEECH_SING);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
}
};
export const speech_pronounce_easy = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendValueInput('VAR')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_MICROBIT_PY_ACTUATOR_SPEECH_PRENOUNCE);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
}
};
export const speech_translate = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendValueInput('VAR')
.setCheck(String)
.appendField(Blockly.Msg.MICROBIT_SPEECH_translation);
this.setOutput(true, String);
this.setTooltip(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE + Blockly.Msg.MIXLY_MICROBIT_TYPE_STRING + Blockly.Msg.MICROBIT_SPEECH_translation);
}
};
export const servo_move = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendValueInput("PIN", Number)
.appendField(Blockly.Msg.MIXLY_SERVO)
.appendField(Blockly.Msg.MIXLY_PIN)
.setCheck(Number);
this.appendValueInput("DEGREE", Number)
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_DEGREE_0_180);
// this.appendValueInput("DELAY_TIME", Number)
// .setCheck(Number)
// .setAlign(Blockly.inputs.Align.RIGHT)
// .appendField(Blockly.Msg.MIXLY_DELAY+'('+Blockly.Msg.MIXLY_MILLIS+')');
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_SERVO_MOVE);
}
};
export const bit_motor_control = {
init: function () {
this.appendValueInput("speed")
.setCheck(null)
.appendField(Blockly.Msg.MIXLY_MOTOR)
.appendField(new Blockly.FieldDropdown([["M1", "1"], ["M2", "2"], ["M3", "3"], ["M4", "4"]]), "Motor")
.appendField(Blockly.Msg.MIXLY_SPEED);
this.appendDummyInput()
.appendField(new Blockly.FieldDropdown([["Forward", "1*"], ["Reverse", "-1*"]]), "mode");
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(ACTUATOR_HUE);
this.setTooltip("");
this.setHelpUrl("");
}
};
//RGB
export const display_rgb_init = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_RGB)
this.appendValueInput("PIN", Number)
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_PIN);
this.appendValueInput("LEDCOUNT")
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_RGB_COUNT);
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip(Blockly.Msg.MIXLY_RGB_PIN_COUNT);
}
};
export const display_rgb = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_RGB)
// this.appendValueInput("PIN", Number)
// .setCheck(Number)
// .setAlign(Blockly.inputs.Align.RIGHT)
// .appendField(Blockly.Msg.MIXLY_PIN);
this.appendValueInput("_LED_")
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_RGB_NUM);
this.appendValueInput("RVALUE")
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_RGB_R);
this.appendValueInput("GVALUE")
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_RGB_G);
this.appendValueInput("BVALUE")
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_RGB_B);
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip('');
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B);
}
};
export const display_rgb2 = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_RGB)
// this.appendValueInput("PIN", Number)
// .setCheck(Number)
// .setAlign(Blockly.inputs.Align.RIGHT)
// .appendField(Blockly.Msg.MIXLY_PIN);
this.appendValueInput("_LED_")
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_RGB_NUM);
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(new Blockly.FieldColour("#ff0000"), "RGB_LED_COLOR");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
}
};
export const display_rgb_show = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_RGB)
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_ESP32_RGB_WRITE)
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip('');
this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_WRI);
}
};
export const MP3_INIT = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_SETUP + ' ' + Blockly.Msg.QJ00X_MP3);
this.appendValueInput("RX")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField("RX#");
this.appendValueInput("TX")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField("TX#");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip();
this.setHelpUrl();
}
};
//MP3播放控制
var MP3_CONTROL_TYPE = [
[Blockly.Msg.MIXLY_MP3_PLAY, "play"],
[Blockly.Msg.MIXLY_MP3_PAUSE, "pause"],
[Blockly.Msg.MIXLY_MP3_NEXT, "next_track"],
[Blockly.Msg.MIXLY_MP3_PREV, "prev_track"],
[Blockly.Msg.MIXLY_MP3_VOL_UP, "inc_vol"],
[Blockly.Msg.MIXLY_MP3_VOL_DOWN, "dec_vol"]
];
//MP3模块
export const MP3_CONTROL = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.QJ00X_MP3);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_STAT)
.appendField(new Blockly.FieldDropdown(MP3_CONTROL_TYPE), "CONTROL_TYPE");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip();
this.setHelpUrl();
}
};
//MP3循环模式
var MP3_LOOP_MODE_OPTIONS = [
[Blockly.Msg.MIXLY_MP3_LOOP_ALL, "0"],
[Blockly.Msg.MIXLY_MP3_LOOP_FOLDER, "1"],
[Blockly.Msg.MIXLY_MP3_LOOP_ONE, "2"],
[Blockly.Msg.MIXLY_MP3_LOOP_RAM, "3"]
];
//MP3模块循环模式
export const MP3_LOOP_MODE = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.QJ00X_MP3);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_MP3_LOOP_MODE)
.appendField(Blockly.Msg.MIXLY_STAT)
.appendField(new Blockly.FieldDropdown(MP3_LOOP_MODE_OPTIONS), "LOOP_MODE");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip();
this.setHelpUrl();
}
};
//MP3 设置EQ
var MP3_EQ_MODE_OPTIONS = [
[Blockly.Msg.MIXLY_MP3_EQ_NORMAL, "0"],
[Blockly.Msg.MIXLY_MP3_EQ_POP, "1"],
[Blockly.Msg.MIXLY_MP3_EQ_ROCK, "2"],
[Blockly.Msg.MIXLY_MP3_EQ_JAZZ, "3"],
[Blockly.Msg.MIXLY_MP3_EQ_CLASSIC, "4"],
[Blockly.Msg.MIXLY_MP3_EQ_BASS, "5"]
];
//MP3模块EQ模式
export const MP3_EQ_MODE = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.QJ00X_MP3);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_MP3_EQ_MODE)
.appendField(Blockly.Msg.MIXLY_STAT)
.appendField(new Blockly.FieldDropdown(MP3_EQ_MODE_OPTIONS), "EQ_MODE");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip();
this.setHelpUrl();
}
};
//MP3模块设置音量
export const MP3_VOL = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.QJ00X_MP3);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_MP3_VOL);
this.appendValueInput("vol", Number)
.appendField(Blockly.Msg.MIXLY_STAT)
.setCheck(Number);
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip();
this.setHelpUrl();
}
};
//MP3模块播放第N首
export const MP3_PLAY_NUM = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.QJ00X_MP3);
this.appendValueInput("NUM", Number)
.appendField(Blockly.Msg.MIXLY_MP3_PLAY_NUM)
.setCheck(Number);
this.appendDummyInput("")
.appendField("首");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip();
this.setHelpUrl();
}
};
export const MP3_PLAY_FOLDER = {
init: function () {
this.setColour(ACTUATOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.QJ00X_MP3);
this.appendValueInput("FOLDER", Number)
.appendField(Blockly.Msg.DFPLAYER_MINI_FOLDER)
.setCheck(Number);
this.appendValueInput("NUM", Number)
.appendField(Blockly.Msg.MIXLY_MP3_PLAY_NUM)
.setCheck(Number);
this.appendDummyInput("")
.appendField("首");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip();
this.setHelpUrl();
}
};