Commit 839b37ba8f902211ff9a7eddc7af5f059b18f79c

Authored by ykxie
1 parent a088de02

fix bug

Showing 1 changed file with 109 additions and 100 deletions
src/js/gbreplayer.js
@@ -386,29 +386,39 @@ $(function(){ @@ -386,29 +386,39 @@ $(function(){
386 ,debuggers: false 386 ,debuggers: false
387 ,allowSeek: false 387 ,allowSeek: false
388 ,playCallback: function(){ // 播放 388 ,playCallback: function(){ // 播放
389 - // playCoder();  
390 -  
391 console.log(GBCodePlayBack.pauseValue) 389 console.log(GBCodePlayBack.pauseValue)
392 - 390 +
393 if (GBCodePlayBack.firstPlay == 0) { 391 if (GBCodePlayBack.firstPlay == 0) {
394 $('#readonly').trigger('click'); 392 $('#readonly').trigger('click');
395 GBCodePlayBack.htmlplayereditor.setValue(GBCodePlayBack.pauseValue) 393 GBCodePlayBack.htmlplayereditor.setValue(GBCodePlayBack.pauseValue)
396 - console.log(GBCodePlayBack.pauseValue); 394 + console.log('GBCodePlayBack.firstPlay--------' + GBCodePlayBack.firstPlay);
397 }else{ 395 }else{
398 GBCodePlayBack.htmlplayereditor.setValue('') 396 GBCodePlayBack.htmlplayereditor.setValue('')
399 - console.log(GBCodePlayBack.pauseValue); 397 + console.log('GBCodePlayBack.firstPlay--------' + GBCodePlayBack.firstPlay);
  398 + var resultData = {
  399 + output: '',
  400 + stderr: '',
  401 + cmpinfo: '',
  402 + result: 1
  403 + };
  404 + compileResult(resultData);
400 } 405 }
401 - $('#play').trigger('click');  
402 406
  407 + playCoder();
  408 + // $('#play').trigger('click');
403 } 409 }
404 ,pauseCallback: function(){ // 暂停 410 ,pauseCallback: function(){ // 暂停
  411 +
  412 + GBCodePlayBack.pauseTime = new Date().getTime(); // 暂停的时间
  413 +
405 $('#readonly').trigger('click'); 414 $('#readonly').trigger('click');
406 415
407 GBCodePlayBack.firstPlay = 0; 416 GBCodePlayBack.firstPlay = 0;
408 417
409 GBCodePlayBack.pauseValue = GBCodePlayBack.htmlplayereditor.getValue(); 418 GBCodePlayBack.pauseValue = GBCodePlayBack.htmlplayereditor.getValue();
410 419
411 - $('#play').trigger('click'); 420 + // $('#play').trigger('click');
  421 + playCoder();
412 422
413 } 423 }
414 ,seekedCallback: function(){} // 拖拽 424 ,seekedCallback: function(){} // 拖拽
@@ -466,6 +476,7 @@ $(function(){ @@ -466,6 +476,7 @@ $(function(){
466 $('#play').find('i').removeClass('icon-play').addClass('icon-playcopy').attr('data-original-title', '暂停'); 476 $('#play').find('i').removeClass('icon-play').addClass('icon-playcopy').attr('data-original-title', '暂停');
467 } 477 }
468 } 478 }
  479 + console.log(GBCodePlayBack.records);
469 if(!playstatus){ 480 if(!playstatus){
470 var playbackrecord = GBCodePlayBack.records, 481 var playbackrecord = GBCodePlayBack.records,
471 currenteditor = ''; 482 currenteditor = '';
@@ -1409,10 +1420,10 @@ $(function(){ @@ -1409,10 +1420,10 @@ $(function(){
1409 1420
1410 }, 1421 },
1411 changeValueCallback: function(record, replay_type, offset) { 1422 changeValueCallback: function(record, replay_type, offset) {
1412 - var obj = record.changeobj, editor = record.editor;  
1413 -  
1414 - return function() { 1423 + var obj = record.changeobj,
  1424 + editor = record.editor;
1415 1425
  1426 + return function() {
1416 if(GBCodePlayBack.active_editor!==editor){ 1427 if(GBCodePlayBack.active_editor!==editor){
1417 $('#' + editor + 'button').trigger('click'); //这里出发触发选择编辑事件 1428 $('#' + editor + 'button').trigger('click'); //这里出发触发选择编辑事件
1418 }else{ 1429 }else{
@@ -1430,7 +1441,6 @@ $(function(){ @@ -1430,7 +1441,6 @@ $(function(){
1430 record.trigger = 1; //标记已运行 1441 record.trigger = 1; //标记已运行
1431 record.playTime = new Date().getTime(); // 播放开始时间 1442 record.playTime = new Date().getTime(); // 播放开始时间
1432 1443
1433 -  
1434 var resultData = { 1444 var resultData = {
1435 output: record.output || '', 1445 output: record.output || '',
1436 stderr: record.stderr || '', 1446 stderr: record.stderr || '',
@@ -1451,30 +1461,32 @@ $(function(){ @@ -1451,30 +1461,32 @@ $(function(){
1451 } 1461 }
1452 1462
1453 /*计算播放进度*/ 1463 /*计算播放进度*/
1454 - var percertage = '0%',percertagenum=0;  
1455 - if(replay_type){  
1456 - percertagenum = Math.ceil(GBCodePlayBack.excercise_triggertotal/GBCodePlayBack.excercise_records.length*100)  
1457 - percertage = percertagenum + '%';  
1458 - }else{  
1459 - if(!offset){  
1460 - percertagenum = Math.ceil(GBCodePlayBack.triggertotal/GBCodePlayBack.records.length*100);  
1461 - percertage = percertagenum + '%';  
1462 - $('#replayprogressbar').css({'width':percertage}).find('span').html(percertage);  
1463 - $('.slider').slider( "option", "now", percertagenum);  
1464 - } 1464 + var percertage = '0%',
  1465 + percertagenum = 0;
  1466 + if (replay_type) {
  1467 + percertagenum = Math.ceil(GBCodePlayBack.excercise_triggertotal / GBCodePlayBack.excercise_records.length * 100)
  1468 + percertage = percertagenum + '%';
  1469 + } else {
  1470 + if (!offset) {
  1471 + percertagenum = Math.ceil(GBCodePlayBack.triggertotal / GBCodePlayBack.records.length * 100);
  1472 + percertage = percertagenum + '%';
  1473 + $('#replayprogressbar').css({ 'width': percertage }).find('span').html(percertage);
  1474 + $('.slider').slider("option", "now", percertagenum);
  1475 + }
1465 } 1476 }
1466 - 1477 +
1467 if(GBCodePlayBack.triggertotal === GBCodePlayBack.records.length && !replay_type){ 1478 if(GBCodePlayBack.triggertotal === GBCodePlayBack.records.length && !replay_type){
1468 1479
1469 $('#play') 1480 $('#play')
1470 - .data('status',0)  
1471 - .attr('title','播放')  
1472 - .addClass('btn-success')  
1473 - .removeClass('btn-danger')  
1474 - .removeClass('infinite')  
1475 - .find('span')  
1476 - .addClass('glyphicon-play')  
1477 - .removeClass('glyphicon-pause'); 1481 + .data('status', 0)
  1482 + .attr('title', '播放')
  1483 + .addClass('btn-success')
  1484 + .removeClass('btn-danger')
  1485 + .removeClass('infinite')
  1486 + .find('span')
  1487 + .addClass('glyphicon-play')
  1488 + .removeClass('glyphicon-pause');
  1489 +
1478 1490
1479 $('#recordertab a:first').tab('show'); 1491 $('#recordertab a:first').tab('show');
1480 1492
@@ -1507,8 +1519,6 @@ $(function(){ @@ -1507,8 +1519,6 @@ $(function(){
1507 } 1519 }
1508 1520
1509 GBCodePlayBack.triggeroffset=0; //reset offset for 滑动进度条 1521 GBCodePlayBack.triggeroffset=0; //reset offset for 滑动进度条
1510 -  
1511 -  
1512 } 1522 }
1513 1523
1514 if(GBCodePlayBack.excercise_triggertotal === GBCodePlayBack.excercise_records.length){ 1524 if(GBCodePlayBack.excercise_triggertotal === GBCodePlayBack.excercise_records.length){
@@ -1784,71 +1794,68 @@ $(function(){ @@ -1784,71 +1794,68 @@ $(function(){
1784 } 1794 }
1785 1795
1786 // 播发代码 1796 // 播发代码
1787 - function playCoder(){  
1788 - //禁用修改  
1789 - if(!$('#replaydone').data("readonly")){  
1790 - $('#replaydone').trigger('click');  
1791 - }  
1792 -  
1793 - $('#recordertab a:eq(1)').tab('show');  
1794 -  
1795 - var playstatus = $('#play').data('status'); 1797 + function playCoder() {
  1798 +
  1799 + $('#recordertab a:eq(1)').tab('show');
  1800 +
  1801 + var playstatus = $('#play').data('status');
  1802 + console.log(playstatus)
  1803 + if (!playstatus) {
  1804 + var playbackrecord = GBCodePlayBack.records;
  1805 + var starttime = playbackrecord[0].intervaltime;
  1806 +
  1807 + for (var i = 0; i < playbackrecord.length; i++) {
  1808 + if (playbackrecord[i].trigger === 0) {
  1809 + var timeoutcontroller = null;
  1810 + var replayinterval = playbackrecord[i].intervaltime,
  1811 + replay_enhancement_interval = GBCodePlayBack.replay_enhancement_value;
  1812 +
  1813 + if (i === 0) {
  1814 + starttime = replayinterval;
  1815 + if (GBCodePlayBack.pauseTime) {
  1816 + if (tag === 1) {
  1817 + GBCodePlayBack.stopIntervalTime = playbackrecord[0].intervaltime - (GBCodePlayBack.pauseTime - GBCodePlayBack.playRecordStart);
  1818 + starttime = GBCodePlayBack.stopIntervalTime;
  1819 + tag++;
  1820 + } else {
  1821 + GBCodePlayBack.stopIntervalTime = GBCodePlayBack.stopIntervalTime - (GBCodePlayBack.pauseTime - GBCodePlayBack.playRecordStart);
  1822 + starttime = GBCodePlayBack.stopIntervalTime;
  1823 + }
  1824 + }
  1825 + } else {
  1826 + starttime = parseInt(starttime) + parseInt(replayinterval);
  1827 +
  1828 + if (GBCodePlayBack.pauseTime && GBCodePlayBack.pauseTime - playbackrecord[i - 1].playTime > 0) {
  1829 + GBCodePlayBack.stopIntervalTime = GBCodePlayBack.pauseTime - playbackrecord[i - 1].playTime;
  1830 + starttime = GBCodePlayBack.stopIntervalTime + parseInt(replayinterval);
  1831 + }
  1832 + }
  1833 + timeoutcontroller = setTimeout(GBCodePlayBack.changeValueCallback(playbackrecord[i]), starttime);
  1834 + GBCodePlayBack.recordtimeoutcontrolls.push(timeoutcontroller);
  1835 + console.log(GBCodePlayBack.recordtimeoutcontrolls);
  1836 + }
  1837 + }
  1838 + // 记录播放的时间
  1839 + GBCodePlayBack.playRecordStart = new Date().getTime();
  1840 + } else {
  1841 + var recordtimeoutcontrolls = GBCodePlayBack.recordtimeoutcontrolls;
  1842 +
  1843 + for (var i = 0; i < recordtimeoutcontrolls.length; i++) {
  1844 + clearTimeout(recordtimeoutcontrolls[i]);
  1845 + }
  1846 + GBCodePlayBack.recordtimeoutcontrolls = [];
  1847 + GBCodePlayBack.recordtimeouts = [];
  1848 + // GBCodePlayBack.playRecordStart = new Date().getTime(); // 再次开始播放的时间
  1849 + }
1796 1850
1797 - if(document.URL.indexOf('player.html')>=0){  
1798 - if(playstatus){  
1799 - GBCodePlayBack.pauseData = new Date().getTime(); // 暂停的时间  
1800 - }else{  
1801 - GBCodePlayBack.htmlplayereditor.setValue('');  
1802 - }  
1803 - }  
1804 -  
1805 - if(!playstatus){  
1806 - var playbackrecord = GBCodePlayBack.records,  
1807 - currenteditor = '';  
1808 - var starttime = playbackrecord[0].intervaltime;  
1809 -  
1810 - for(var i=0;i<playbackrecord.length;i++){  
1811 - if(playbackrecord[i].trigger === 0){  
1812 - var timeoutcontroller = null;  
1813 - var replayinterval = playbackrecord[i].intervaltime,  
1814 - replay_enhancement_interval = GBCodePlayBack.replay_enhancement_value ;  
1815 - if (i === 0) {  
1816 - starttime=replayinterval;  
1817 - if (GBCodePlayBack.pauseData) {  
1818 - if (tag === 1) {  
1819 - GBCodePlayBack.stopIntervalTime = playbackrecord[0].intervaltime - (GBCodePlayBack.pauseData - GBCodePlayBack.playRecordStart);  
1820 - starttime = GBCodePlayBack.stopIntervalTime;  
1821 - tag++;  
1822 - }else{  
1823 - GBCodePlayBack.stopIntervalTime = GBCodePlayBack.stopIntervalTime - (GBCodePlayBack.pauseData - GBCodePlayBack.playRecordStart);  
1824 - starttime = GBCodePlayBack.stopIntervalTime;  
1825 - }  
1826 - }  
1827 - }else{  
1828 - starttime = parseInt(starttime) + parseInt(replayinterval); 1851 + $('#play').data('status', !playstatus);
  1852 +
  1853 + console.log(recordtimeoutcontrolls)
1829 1854
1830 - if (GBCodePlayBack.pauseData && GBCodePlayBack.pauseData - playbackrecord[i-1].playTime > 0) {  
1831 - GBCodePlayBack.stopIntervalTime = GBCodePlayBack.pauseData - playbackrecord[i-1].playTime;  
1832 - starttime = GBCodePlayBack.stopIntervalTime + parseInt(replayinterval);  
1833 - }  
1834 - }  
1835 - timeoutcontroller = setTimeout( GBCodePlayBack.changeValueCallback(playbackrecord[i]), starttime/GBCodePlayBack.speed );  
1836 - GBCodePlayBack.recordtimeoutcontrolls.push(timeoutcontroller);  
1837 - }  
1838 - currenteditor = playbackrecord[i].editor; //标示当前的编辑器, 以便判断是否需要切换编辑器并添加预留500毫秒时间  
1839 - }  
1840 - // 记录播放的时间  
1841 - GBCodePlayBack.playRecordStart = new Date().getTime();  
1842 - }else{  
1843 - var recordtimeoutcontrolls = GBCodePlayBack.recordtimeoutcontrolls;  
1844 - for(var i=0;i<recordtimeoutcontrolls.length;i++){  
1845 - clearTimeout(recordtimeoutcontrolls[i]);  
1846 - }  
1847 - GBCodePlayBack.recordtimeouts = [];  
1848 - }  
1849 - $(this).data('status', !playstatus);  
1850 } 1855 }
1851 1856
  1857 +
  1858 +
1852 1859
1853 var htmlhlLine = null, 1860 var htmlhlLine = null,
1854 csshlLine = null, 1861 csshlLine = null,
@@ -1977,22 +1984,24 @@ $(function(){ @@ -1977,22 +1984,24 @@ $(function(){
1977 }, 1984 },
1978 error: function(data){ 1985 error: function(data){
1979 console.log('播放结束错误'); 1986 console.log('播放结束错误');
1980 - console.log(data);  
1981 } 1987 }
1982 }); 1988 });
1983 } 1989 }
1984 1990
1985 GBCodePlayBack.firstPlay = 1; 1991 GBCodePlayBack.firstPlay = 1;
1986 - GBCodePlayBack.triggertotal = 0;  
1987 - console.log(GBCodePlayBack.records) 1992 +
1988 /* 初始化播放 */ 1993 /* 初始化播放 */
  1994 + $('#play').data('status', 0);
1989 for (var i = 0; i < GBCodePlayBack.records.length; i++) { 1995 for (var i = 0; i < GBCodePlayBack.records.length; i++) {
1990 GBCodePlayBack.records[i].trigger = 0; 1996 GBCodePlayBack.records[i].trigger = 0;
1991 } 1997 }
1992 -  
1993 - for (var i = 0; i < GBCodePlayBack.recordtimeoutcontrolls.length; i++) {  
1994 - clearTimeout(GBCodePlayBack.recordtimeoutcontrolls[i]); 1998 + for(var i=0;i<GBCodePlayBack.recordtimeoutcontrolls.length;i++){
  1999 + clearTimeout(GBCodePlayBack.recordtimeoutcontrolls[i]);
1995 } 2000 }
  2001 + GBCodePlayBack.recordtimeoutcontrolls = [];
  2002 +
  2003 + GBCodePlayBack.pauseTime = null;
  2004 + GBCodePlayBack.playRecordStart = null;
1996 2005
1997 console.log(GBCodePlayBack.records) 2006 console.log(GBCodePlayBack.records)
1998 if($('#readonly').length>0){ 2007 if($('#readonly').length>0){