@@ -208,19 +208,20 @@ Blockly.JavaScript['demo_youtube'] = function (block) {
208
208
var dropdown_type_ = block . getFieldValue ( 'type_' ) ;
209
209
var text_id_ = block . getFieldValue ( 'id_' ) ;
210
210
var codeAdd ;
211
- if ( dropdown_type_ == 1 ) {
212
- codeAdd = ' ' + value_name_ + '.loadVideoById({\n' +
213
- ' videoId:"' + text_id_ + '"\n' +
214
- ' });\n'
215
- } else {
216
- codeAdd = ' ' + value_name_ + '.loadPlaylist({\n' +
217
- ' list:"' + text_id_ + '",\n' +
218
- ' listType:"playlist",\n' +
219
- ' index:0\n' +
220
- ' });\n' +
221
- ' ' + value_name_ + '.setLoop(true);\n'
211
+ if ( dropdown_type_ == 1 ) {
212
+ codeAdd = ' ' + value_name_ + '.loadVideoById({\n' +
213
+ ' videoId:"' + text_id_ + '"\n' +
214
+ ' });\n'
215
+ } else {
216
+ codeAdd = ' ' + value_name_ + '.loadPlaylist({\n' +
217
+ ' list:"' + text_id_ + '",\n' +
218
+ ' listType:"playlist",\n' +
219
+ ' index:0\n' +
220
+ ' });\n' +
221
+ ' ' + value_name_ + '.setLoop(true);\n'
222
222
}
223
- var code =
223
+ var code =
224
+ 'var ' + value_name_ + 'Play, ' + value_name_ + 'Stop, ' + value_name_ + 'Pause;\n' +
224
225
'await new Promise(function (resolve) {\n' +
225
226
' var tag = document.createElement("script");\n' +
226
227
' tag.src = "https://www.youtube.com/iframe_api";\n' +
@@ -238,11 +239,21 @@ Blockly.JavaScript['demo_youtube'] = function (block) {
238
239
' events: {\n' +
239
240
' onReady: function (evt) {\n' + codeAdd +
240
241
' resolve();\n' +
241
- ' }\n' +
242
+ ' },\n' +
243
+ ' onStateChange: onPlayerStateChange\n' +
242
244
' }\n' +
243
245
' });\n' +
244
246
' };\n' +
245
- '});\n' ;
247
+ '});\n' +
248
+ 'function onPlayerStateChange(event) {\n' +
249
+ ' if(event.data == ' + value_name_ + 'Stop) {\n' +
250
+ ' ' + value_name_ + 'StopCallback();\n' +
251
+ ' }else if(event.data == ' + value_name_ + 'Play){\n' +
252
+ ' ' + value_name_ + 'PlayCallback();\n' +
253
+ ' }else if(event.data == ' + value_name_ + 'Pause){\n' +
254
+ ' ' + value_name_ + 'PauseCallback();\n' +
255
+ ' }\n' +
256
+ '};\n' ;
246
257
return code ;
247
258
} ;
248
259
@@ -300,35 +311,59 @@ Blockly.JavaScript['demo_youtube_id'] = function (block) {
300
311
} ;
301
312
302
313
303
- Blockly . JavaScript [ 'demo_youtube_listcontrol' ] = function ( block ) {
314
+ Blockly . JavaScript [ 'demo_youtube_listcontrol' ] = function ( block ) {
304
315
var variable_name_ = Blockly . JavaScript . variableDB_ . getName ( block . getFieldValue ( 'name_' ) , Blockly . Variables . NAME_TYPE ) ;
305
316
var dropdown_preornext_ = block . getFieldValue ( 'preOrNext_' ) ;
306
- var code = variable_name_ + dropdown_preornext_ + ';\n' ;
317
+ var code = variable_name_ + dropdown_preornext_ + ';\n' ;
307
318
return code ;
308
319
} ;
309
320
310
321
311
- Blockly . JavaScript [ 'demo_youtube_listnum' ] = function ( block ) {
322
+ Blockly . JavaScript [ 'demo_youtube_listnum' ] = function ( block ) {
312
323
var variable_name_ = Blockly . JavaScript . variableDB_ . getName ( block . getFieldValue ( 'name_' ) , Blockly . Variables . NAME_TYPE ) ;
313
324
var value_num_ = Blockly . JavaScript . valueToCode ( block , 'num_' , Blockly . JavaScript . ORDER_ATOMIC ) ;
314
- var code = variable_name_ + '.playVideoAt(' + ( value_num_ * 1 - 1 ) + ');\n' ;
325
+ var code = variable_name_ + '.playVideoAt(' + ( value_num_ * 1 - 1 ) + ');\n' ;
315
326
return code ;
316
327
} ;
317
328
318
329
319
- Blockly . JavaScript [ 'demo_youtube_currenttime' ] = function ( block ) {
330
+ Blockly . JavaScript [ 'demo_youtube_currenttime' ] = function ( block ) {
320
331
var variable_name_ = Blockly . JavaScript . variableDB_ . getName ( block . getFieldValue ( 'name_' ) , Blockly . Variables . NAME_TYPE ) ;
321
332
var code = 'Math.round(' + variable_name_ + '.getCurrentTime()*10)/10' ;
322
333
return [ code , Blockly . JavaScript . ORDER_NONE ] ;
323
334
} ;
324
335
325
- Blockly . JavaScript [ 'demo_youtube_seekto' ] = function ( block ) {
336
+ Blockly . JavaScript [ 'demo_youtube_seekto' ] = function ( block ) {
326
337
var variable_name_ = Blockly . JavaScript . variableDB_ . getName ( block . getFieldValue ( 'name_' ) , Blockly . Variables . NAME_TYPE ) ;
327
338
var value_sec_ = Blockly . JavaScript . valueToCode ( block , 'sec_' , Blockly . JavaScript . ORDER_ATOMIC ) ;
328
339
var code = variable_name_ + '.seekTo(' + value_sec_ + ');\n' ;
329
340
return code ;
330
341
} ;
331
342
343
+ Blockly . JavaScript [ 'demo_youtube_callback' ] = function ( block ) {
344
+ var variable_val_ = Blockly . JavaScript . variableDB_ . getName ( block . getFieldValue ( 'val_' ) , Blockly . Variables . NAME_TYPE ) ;
345
+ var dropdown_event_ = block . getFieldValue ( 'event_' ) ;
346
+ var statements_do_ = Blockly . JavaScript . statementToCode ( block , 'do_' ) ;
347
+ var code ;
348
+ if ( dropdown_event_ == 0 ) {
349
+ code = variable_val_ + 'Stop = 0;\n' +
350
+ 'function ' + variable_val_ + 'StopCallback(){\n' +
351
+ statements_do_ + '\n' +
352
+ '}\n' ;
353
+ } else if ( dropdown_event_ == 1 ) {
354
+ code = variable_val_ + 'Play = 1;\n' +
355
+ 'function ' + variable_val_ + 'PlayCallback(){\n' +
356
+ statements_do_ + '\n' +
357
+ '}\n' ;
358
+ } else if ( dropdown_event_ == 2 ) {
359
+ code = variable_val_ + 'Pause = 2;\n' +
360
+ 'function ' + variable_val_ + 'PauseCallback(){\n' +
361
+ statements_do_ + '\n' +
362
+ '}\n' ;
363
+ }
364
+ return code ;
365
+ } ;
366
+
332
367
//controller
333
368
Blockly . JavaScript [ 'demo_controller' ] = function ( block ) {
334
369
var dropdown_event_ = block . getFieldValue ( 'event_' ) ;
@@ -641,9 +676,9 @@ Blockly.JavaScript['demo_tracking_action'] = function (block) {
641
676
Blockly . JavaScript [ 'demo_tracking_val' ] = function ( block ) {
642
677
var dropdown_val_ = block . getFieldValue ( 'val_' ) ;
643
678
var code = '' ;
644
- if ( dropdown_val_ === 'total' ) {
679
+ if ( dropdown_val_ === 'total' ) {
645
680
code = 'event.data.length' ;
646
- } else {
681
+ } else {
647
682
code = 'data.' + dropdown_val_ ;
648
683
}
649
684
return [ code , Blockly . JavaScript . ORDER_ATOMIC ] ;
@@ -1619,13 +1654,13 @@ Blockly.JavaScript['sound_recognition_check'] = function (block) {
1619
1654
var statements_do_ = Blockly . JavaScript . statementToCode ( block , 'do_' ) ;
1620
1655
var code ;
1621
1656
var a = value_text_ . split ( '' ) ;
1622
- if ( a [ 0 ] == '\'' ) {
1623
- var b = value_text_ . replace ( / ' / g, '' ) ;
1657
+ if ( a [ 0 ] == '\'' ) {
1658
+ var b = value_text_ . replace ( / ' / g, '' ) ;
1624
1659
code = 'if(result.resultTranscript.indexOf("' + b + '")!== -1){\n' +
1625
1660
' ' + statements_do_ +
1626
- ' console.log(event.results[result.resultLength]);\n' +
1661
+ ' console.log(event.results[result.resultLength]);\n' +
1627
1662
' }\n' ;
1628
- } else {
1663
+ } else {
1629
1664
code = 'if(result.resultTranscript.indexOf(' + value_text_ + ')!==-1){\n' +
1630
1665
' ' + statements_do_ +
1631
1666
' }\n' ;
0 commit comments