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 386 ,debuggers: false
387 387 ,allowSeek: false
388 388 ,playCallback: function(){ // 播放
389   - // playCoder();
390   -
391 389 console.log(GBCodePlayBack.pauseValue)
392   -
  390 +
393 391 if (GBCodePlayBack.firstPlay == 0) {
394 392 $('#readonly').trigger('click');
395 393 GBCodePlayBack.htmlplayereditor.setValue(GBCodePlayBack.pauseValue)
396   - console.log(GBCodePlayBack.pauseValue);
  394 + console.log('GBCodePlayBack.firstPlay--------' + GBCodePlayBack.firstPlay);
397 395 }else{
398 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 410 ,pauseCallback: function(){ // 暂停
  411 +
  412 + GBCodePlayBack.pauseTime = new Date().getTime(); // 暂停的时间
  413 +
405 414 $('#readonly').trigger('click');
406 415  
407 416 GBCodePlayBack.firstPlay = 0;
408 417  
409 418 GBCodePlayBack.pauseValue = GBCodePlayBack.htmlplayereditor.getValue();
410 419  
411   - $('#play').trigger('click');
  420 + // $('#play').trigger('click');
  421 + playCoder();
412 422  
413 423 }
414 424 ,seekedCallback: function(){} // 拖拽
... ... @@ -466,6 +476,7 @@ $(function(){
466 476 $('#play').find('i').removeClass('icon-play').addClass('icon-playcopy').attr('data-original-title', '暂停');
467 477 }
468 478 }
  479 + console.log(GBCodePlayBack.records);
469 480 if(!playstatus){
470 481 var playbackrecord = GBCodePlayBack.records,
471 482 currenteditor = '';
... ... @@ -1409,10 +1420,10 @@ $(function(){
1409 1420  
1410 1421 },
1411 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 1427 if(GBCodePlayBack.active_editor!==editor){
1417 1428 $('#' + editor + 'button').trigger('click'); //这里出发触发选择编辑事件
1418 1429 }else{
... ... @@ -1430,7 +1441,6 @@ $(function(){
1430 1441 record.trigger = 1; //标记已运行
1431 1442 record.playTime = new Date().getTime(); // 播放开始时间
1432 1443  
1433   -
1434 1444 var resultData = {
1435 1445 output: record.output || '',
1436 1446 stderr: record.stderr || '',
... ... @@ -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 1478 if(GBCodePlayBack.triggertotal === GBCodePlayBack.records.length && !replay_type){
1468 1479  
1469 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 1491 $('#recordertab a:first').tab('show');
1480 1492  
... ... @@ -1507,8 +1519,6 @@ $(function(){
1507 1519 }
1508 1520  
1509 1521 GBCodePlayBack.triggeroffset=0; //reset offset for 滑动进度条
1510   -
1511   -
1512 1522 }
1513 1523  
1514 1524 if(GBCodePlayBack.excercise_triggertotal === GBCodePlayBack.excercise_records.length){
... ... @@ -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 1860 var htmlhlLine = null,
1854 1861 csshlLine = null,
... ... @@ -1977,22 +1984,24 @@ $(function(){
1977 1984 },
1978 1985 error: function(data){
1979 1986 console.log('播放结束错误');
1980   - console.log(data);
1981 1987 }
1982 1988 });
1983 1989 }
1984 1990  
1985 1991 GBCodePlayBack.firstPlay = 1;
1986   - GBCodePlayBack.triggertotal = 0;
1987   - console.log(GBCodePlayBack.records)
  1992 +
1988 1993 /* 初始化播放 */
  1994 + $('#play').data('status', 0);
1989 1995 for (var i = 0; i < GBCodePlayBack.records.length; i++) {
1990 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 2006 console.log(GBCodePlayBack.records)
1998 2007 if($('#readonly').length>0){
... ...