2013-02-05 4 views
1

je viens de construire une galerie vidéoRetirez la navigation vidéo vacillante de la galerie vidéo

Voici le lien vers la galerie vidéo

http://www.braddockinfotech.com/demo/dvnonline/vod1/ 

Deux questions::

1) Lors de la navigation dans la galerie en utilisant les touches fléchées vers le haut et vers le bas, il y a une sorte de saut vidéo ou flicker.how pour enlever cela

2) Des espaces supplémentaires inégaux avant et après la première et la dernière vidéo en Galerie.

Voici le code html

<body onkeydown="HandleKeyDown(event);"> 
    <table cellpadding="0px" cellspacing="0px" border="0px" class="sitewidth"> 
     <tr> 
      <td align="left" valign="top" style="width:800px;"> 
       <div id='divVideoPlayer'></div> 
      </td> 
      <td align="center" style="width:140px;"> 
       <div id="divPlaylistContainer"> 
        <div id="playlistNavPrev"> 
         <a id="imgNavPrev" onclick="MoveToDirection('Up');"><span class="arrow">&nbsp;</span> 
         </a> 
        </div> 
        <div id="divPlaylist"> 
         <!--playlist--> 
         <div id="spanSlider" style='top:0px; position:relative;'> 
          <ul id="ulSlider"> 
           <?php $index=1 ; $firstVideoUrl='' ; $firstImageUrl='' ; $videoDetails=G 
           etVideoDetails(); echo "<script> var siteUrl = '".$siteUrl. 
           "' </script>"; while ($row=m ysql_fetch_array($videoDetails)) { echo 
           "<script>video[".$index. "]='";echo $row[3]. "';</script>"; echo "<script>image[".$index. 
           "]='";echo $row[2]. "';</script>"; //echo "<script>title[".$index. "]='";echo 
           $row[1]. "';</script>"; echo "<script>title[".$index. "]='";echo str_replace(
           "'", "\'",$row[1]). "';</script>"; // 0 - id , 1 - Title , 2- ImageUrl, 3 
           - VideoUrl //echo $row[0].$row[1].$row[2].$row[3]. "<br/>"; //echo 
           "<li id='liButton_".$index. "'><a onclick=\"ShowVideo('".$index."');\ 
           "><img id='ImageButton_".$index. "' title='".$row[1]. "' alt='".$row[1]. "' src=".$siteUrl. 
           "timthumb/timthumb.php?src=".$row[2]. "&amp;h=54&amp;w=109&amp;zc=1&amp;a=c></a></li>"; $index++; 
           } ?> 
          </ul> 
         </div> 
        </div> 
        <div id="playlistNavNxt"> 
         <a id="imgNavNext" onclick="MoveToDirection('Down');"><span class="arrow">&nbsp;</span> 
         </a> 
        </div> 
       </div> 
      </td> 
    </table> 
</body> 

Voici le code javascript ..

var video = new Array(); 
var image = new Array(); 
var title = new Array(); 
var noOfImagesCanShow = 6; 
var selected = 1; 
var slideNo = 1; 


String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g, ""); 
}; 

function SetPlayList() { 
    var listHtml = ''; 
    var lastIndex = slideNo * noOfImagesCanShow; 
    var firstIndex = (slideNo * noOfImagesCanShow) - (noOfImagesCanShow - 1); 
    var rowNo = 1; 
    for (var i = firstIndex; i <= lastIndex; i++) { 
     if (firstIndex >= 1 && lastIndex < title.length) { 
      listHtml += "<li id='liButton_" + rowNo + "'><a onclick=\"ShowVideo('" + i + "');\"><img id='ImageButton_" + i + "' title=\"" + title[i] + "\" alt='" + title[i] + "' src=" + siteUrl + "timthumb/timthumb.php?src=" + image[(i)] + "&amp;h=54&amp;w=109&amp;zc=1&amp;a=c></a></li>"; 
      rowNo++; 
     } 
    } 
    document.getElementById('ulSlider').innerHTML = listHtml; 
    document.getElementById('liButton_1').tabIndex = 2; 
    document.getElementById('liButton_1').focus(); 
} 

function ShowVideo(videoIndex) { 
    var streamToBeUsed = ""; 
    var provideType = ""; 
    if (video[videoIndex].trim().substring(0, 7) == "http://") { 
     streamToBeUsed = ''; 
     provideType = "http"; 
    } else { 
     streamToBeUsed = "rtmp://cp87191.edgefcs.net/ondemand/"; 
     provideType = "rtmp"; 
    } 
    var autostart = "true"; 

    if (jwplayer("divVideoPlayer") != null) { 
     jwplayer("divVideoPlayer").stop(); 
    } 

    jwplayer("divVideoPlayer").setup({ 
     file: streamToBeUsed + video[videoIndex].trim(), 
     image: image[videoIndex], 
     icons: "true", 
     autostart: autostart, 
     screencolor: "black", 
     'width': '800', 
     'height': '510', 
     streamer: streamToBeUsed, 
     provider: provideType, 
     events: { 
      onBeforePlay: function() { 
       document.getElementById('liButton_' + videoIndex).tabIndex = '2'; 
       document.getElementById('liButton_' + videoIndex).focus(); 
      } 
     } 
    }); 
    // clearing all style 
    var totalImages = noOfImagesCanShow; 
    for (var i = 1; i <= totalImages; i++) { 
     var imageId = (((slideNo * noOfImagesCanShow) - (noOfImagesCanShow)) + i).toString(); 
     if (document.getElementById('liButton_' + i) != null && document.getElementById('ImageButton_' + imageId) != null) { 
      document.getElementById('liButton_' + i).className = 'inactiveli'; 
      document.getElementById('ImageButton_' + imageId).className = 'inactive'; 
     } 
    } 
    document.getElementById('liButton_' + videoIndex).className = 'activeli'; 
    document.getElementById('ImageButton_' + (((slideNo - 1) * noOfImagesCanShow) + parseInt(videoIndex)).toString()).className = 'active'; 

    SetButtonStatus(((slideNo - 1) * noOfImagesCanShow) + parseInt(videoIndex)); 


    document.getElementById('liButton_' + videoIndex).tabIndex = '2'; 
    document.getElementById('liButton_' + videoIndex).focus(); 
    document.getElementById('divVideoPlayer').tabIndex = '-1'; 

} 

function SetButtonStatus(imageIndex) { 
    if (imageIndex <= noOfImagesCanShow) { 
     document.getElementById('imgNavPrev').className = 'disable_up'; 
     document.getElementById('imgNavPrev').tabIndex = '-1'; 
     document.getElementById('imgNavNext').tabIndex = '3'; 
    } else { 
     document.getElementById('imgNavPrev').className = 'enable_up'; 
     document.getElementById('imgNavPrev').tabIndex = '1'; 
    } 

    if (imageIndex > (image.length - noOfImagesCanShow)) { 
     document.getElementById('imgNavNext').className = 'disable_down'; 
     document.getElementById('imgNavNext').tabIndex = '-1'; 
     document.getElementById('imgNavPrev').tabIndex = '1'; 
    } else { 
     document.getElementById('imgNavNext').className = 'enable_down'; 
     document.getElementById('imgNavNext').tabIndex = '3'; 
    } 
} 

function MoveToDirection(direction) { 
    if (direction == 'Down') { 
     if (document.getElementById('imgNavNext').className != 'disable_down') { 
      slideNo++; 
      SetButtonStatus(slideNo * noOfImagesCanShow); 
      SetPlayList(); 
      var topEle = document.getElementById('liButton_1'); 
      var nextSelImgId = topEle.getElementsByTagName("img")[0].getAttribute("id"); 
      document.getElementById(nextSelImgId).className = 'active'; 
     } 
    } else if (direction == 'Up') { 
     if (document.getElementById('imgNavPrev').className != 'disable_up') { 
      slideNo--; 
      SetButtonStatus(slideNo * noOfImagesCanShow); 
      SetPlayList(); 

      var topEle = document.getElementById('liButton_6'); 
      var nextSelImgId = topEle.getElementsByTagName("img")[0].getAttribute("id"); 
      document.getElementById(nextSelImgId).className = 'active'; 

      console.log('Setting active element ' + nextSelImgId); 


      document.getElementById('liButton_6').focus(); 
      console.log('active element ' + document.activeElement.id); 
     } 
    } 
} 

function HandleKeyDown(ev) { 
    if (document.activeElement != null) { 
     var element = document.activeElement; 

     if (ev.keyCode == 13) { 
      /*User Pressed Enter, Handle If required*/ 
      if (element.id == "imgNavNext" && element.className != "disable_down") { 
       MoveToDirection('Down'); 
      } else if (element.id == "imgNavPrev" && element.className != "disable_up") { 
       MoveToDirection('Up'); 
      } else if (element.id.indexOf("liButton_") > -1) { 
       var nameSections = element.id.split('_'); 

       ShowVideo(nameSections[1]); 
      } 
     } else if (ev.keyCode == 40) { 
      /*User Pressed Down*/ 
      console.log('Pressed Down'); 
      console.log('Element Id is ' + element.id); 
      if (element.id.indexOf("liButton_") > -1) { 
       console.log('Entered liButton_ Checking....'); 
       var nameSections = element.id.split('_'); 

       var imgName = element.getElementsByTagName("img")[0].getAttribute("id"); 
       var imgSection = imgName.split('_'); 
       var nextImgToFocus = (parseInt(imgSection[1])) + 1; 


       var nextIndexToFocus = (parseInt(nameSections[1])) + 1; 
       if (document.getElementById("liButton_" + nextIndexToFocus) != null) { 
        document.getElementById("liButton_" + nextIndexToFocus).tabIndex = element.tabIndex; 
        element.tabIndex = "-1"; 


        document.getElementById("ImageButton_" + nextImgToFocus).className = 'active'; 
        document.getElementById("ImageButton_" + (nextImgToFocus - 1)).className = 'inactive'; 




        document.getElementById("liButton_" + nextIndexToFocus).focus(); 
       } else //need to focus in navNext 
       { 
        if (document.getElementById('imgNavNext').className != 'disable_down') { 
         console.log("Enetred need to focus navNext"); 
         var topEle = document.getElementById('liButton_6'); 
         var nextSelImgId = topEle.getElementsByTagName("img")[0].getAttribute("id"); 
         document.getElementById(nextSelImgId).className = 'inactive'; 
         document.getElementById('imgNavNext').focus(); 
        } 
       } 

      } else { 
       if (element.id.indexOf("imgNavPrev") > -1) { 


        document.getElementById("liButton_1").focus(); 
       } 
      } 
     } else if (ev.keyCode == 38) { 
      /*User Pressed Up Up*/ 
      if (element.id.indexOf("liButton_") > -1) { 
       console.log('Up pressed ' + element.id); 
       var nameSections = element.id.split('_'); 

       var imgName = element.getElementsByTagName("img")[0].getAttribute("id"); 
       var imgSection = imgName.split('_'); 
       var nextImgToFocus = (parseInt(imgSection[1])) - 1; 

       var nextIndexToFocus = (parseInt(nameSections[1])) - 1; 
       if (document.getElementById("liButton_" + nextIndexToFocus) != null) { 
        document.getElementById("liButton_" + nextIndexToFocus).tabIndex = element.tabIndex; 
        element.tabIndex = "-1"; 




        document.getElementById("ImageButton_" + nextImgToFocus).className = 'active'; 
        document.getElementById("ImageButton_" + (nextImgToFocus + 1)).className = 'inactive'; 




        document.getElementById("liButton_" + nextIndexToFocus).focus(); 
       } else //need to focus in navPrev 
       { 
        if (document.getElementById('imgNavPrev').className != 'disable_up') { 
         var topEle = document.getElementById('liButton_1'); 
         var nextSelImgId = topEle.getElementsByTagName("img")[0].getAttribute("id"); 
         document.getElementById(nextSelImgId).className = 'inactive'; 

         document.getElementById('imgNavPrev').focus(); 
        } 
       } 
      } else /* To handle up button from imgNavNext */ 
      { 
       if (element.id.indexOf("imgNavNext") > -1) { 

        document.getElementById("liButton_6").focus(); 
       } 
      } 
     } 
    } 
} 
+0

Vérifiez votre 'MoveToDirection ('Down');' fonction. Regarde comment ça marche. – user1477388

+0

ne peux pas comprendre.Peut-être s'il vous plaît souligner clairement – iJade

Répondre

0

La raison, je crois, le scintillement des images est parce qu'ils ne sont pas chargés jusqu'à ce que le bouton est cliqué.

for (var i = firstIndex; i <= lastIndex; i++) { 
     if (firstIndex >= 1 && lastIndex < title.length) { 
      listHtml += "<li id='liButton_" + rowNo + "'><a onclick=\"ShowVideo('" + i + "');\"><img id='ImageButton_" + i + "' title=\"" + title[i] + "\" alt='" + title[i] + "' src=" + siteUrl + "timthumb/timthumb.php?src=" + image[(i)] + "&amp;h=54&amp;w=109&amp;zc=1&amp;a=c></a></li>"; 
      rowNo++; 
     } 
    } 

Lorsque la vue défile vers le haut ou vers le bas, la liste se régénère et les images sont chargées.

Vous pouvez éviter le scintillement si vous préchargez les images.

Vous pouvez le faire en préchargeant toutes les images à la fois ou en chargeant les images tout en affichant un «chargement (veuillez patienter) graphique». S'il vous plaît voir ce http://perishablepress.com/3-ways-preload-images-css-javascript-ajax/

+0

je pense que vous avez mal compris la question. Tandis que nous naviguons en utilisant les touches fléchées les vidéos se déplacent vers le bas vers la galerie pas sur le clic du bouton. – iJade

+0

Oui, les touches fléchées sont aussi un bouton. Lorsque vous cliquez sur les touches fléchées (boutons), de nouvelles images sont chargées. Lorsque vous chargez ces images (qui ne sont pas déjà stockées dans le cache temporaire), les images semblent "scintiller". Pour éviter cela, vous pouvez précharger les images. Cela a-t-il du sens? – user1477388

Questions connexes