ហេតុការណ៍​វីដេអូ Facebook


គេហទំព័រ DEVOpenBlogger បាន​ចុះ​ផ្សាយ​រួច​មក​ហើយ​នូវ​អ្វីដែល​ហៅ​ថា «ហេតុការណ៍» វីដេអូ YouTube ដែល​ជា​ហេតុការណ៍​ត្រូវ​បាន​បង្កើតឡើង​ដោយ​ប្រដាប់​មើល​វីដេអូ​ YouTube នៅ​ពេល​ដែល​វា​ផ្លាស់​ប្តូរ​សភាព​លក្ខណៈ​របស់​វា​ពី​សភាព​មួយ​ទៅ​សភាព​មួយ​ទៀត​ដូចជា​ ការចាប់​ផ្តើ​ម​លេង​វីដេអូ ការសំរាក​ឈប់​ស្ងៀម និង ការលេងចប់​ ជាដើម​។

មួយវិញទៀត នៅ​ពេលដែល​ប្រដាប់មើល​វីដេអូ YouTube ផ្លាស់ប្តូរ​សភាព​លក្ខណៈ​ វា​តែង​តែ​បង្កើតនូវ​ «ហេតុការណ៍» ផ្សេង​ៗ​ទាក់ទង​នឹង​សភាព​លក្ខណៈ​ទាំងនោះ មាន​ដូចជា​នៅ​ពេល​ដែល​វា​ចាប់​ផ្តើមលេង​វីដេអូ វាបង្កើត​នូវ​ហេតុការណ៍​មួយ​ប្រភេទ​មាន​ឈ្មោះ​ថា «YT.PlayerState.PLAYING» ជាដើម​។

ជាទូទៅ នៅពេល​ដែល​ប្រដាប់​មើល​វីដេអូ​ YouTube បង្កើត​នូវ​ហេតុការណ៍​ណា​មួយ យើង​អាច​បង្កើត​ក្បួន (function) ផ្សេង​ៗ​ដែល​នឹង​ត្រូវ​យក​ទៅ​អនុវត្ត​ជាស្វ័យប្រវត្តិ​​បង្កើត​ជា​លទ្ធផល​ផ្សេង​ៗ​ដែល​យើង​ចង់​បាន ដើម្បី​ឆ្លើយ​តប​ទៅ​នឹងហេតុការណ៍​នោះ​។ ក្បួន​ទាំងនោះ​ត្រូវ​បាន​គេ​អោយ​ឈ្មោះ​ថា​ជា​ ក្បួន​ឆ្លើយ​តប​ហេតុការណ៍ (event handler) ។

ដូច​គ្នា​ដែរ ប្រដាប់​មើល​វីដេអូ​របស់​ប្រព័ន្ធ Facebook ក៏​អាច​បង្កើត​នូវ​ហេតុការណ៍​មួយចំនួនទាក់​ទង​ទៅ​នឹងសភាព​លក្ខណៈ​របស់​វា​ដែរ ឧទាហរណ៍​ដូច​ជា​នៅ​ពេលដែល​វា​​ចាប់​ផ្តើម​លេង​វីដេអូ វា​នឹង​បង្កើតនូវ​ហេតុការណ៍​ម៉្យាង​ហៅថា «startedPlaying» ដែល​យើង​អាច​បង្កើត​ក្បួន​មួយ​ចំនួន​ដើម្បី​ឆ្លើយ​តប​ទៅ​នឹង​ហេតុការណ៍​នេះ​បាន​ដែរ​​។

ឧបមា​ថា នៅ​ពេល​ដែល​ប្រដាប់​មើល​វីដេអូ Facebook ចាប់​ផ្តើម​ដំណើរការ ដែល​ជា​កត្តា​ធ្វើ​អោយ​​​ហេតុការណ៍ «startedPlaying» កើត​មានឡើង។ ដើម្បី​ឆ្លើយ​តប​ទៅ​នឹង​ហេតុការណ៍​នេះ​ យើង​ចង់​អោយ​ browser ដូរ​ពណ៌​ទៅ​ជា​​ខ្មៅ​ជា​ស្វ័យប្រវត្តិ ដើម្បី​អាច​មើល​វីដេអូ​ដោយ​មិន​ចាំង​ភ្នែក​។ មួយវិញទៀត នៅ​ពេល​ដែល​ប្រដាប់មើលវីដេអូ​ស្ថិត​ក្នុង​សភាព​សំរាក (pause) ឬ​លេង​ចប់ (ended) យើង​ចង់​អោយ​ផ្ទៃ​ browser ប្រែ​ពណ៌​​​ជា​ស​វិញ​។​ ដើម្បី​សំរេច​បាន​គោល​បំណង​នេះ យើងត្រូវ​​សរសេរ​កម្មវិធី​ដូច​ខាង​ក្រោម​នេះ៖

<style>
/*​ កូដ​ខាង​ក្រោម​នេះ គឺ​ជា​ css ចាំបាច់សំរាប់​រចនា​ menu នៅខាង​ក្រោម
ដែលនៅ​ក្នុង​នោះមាន​ពក្យ​ថា «លេង» «សំរាក» និង «បើក​សំលេង​»។ */
ul{
  list-style-type: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
  background-color: #333;
}

li {
  float: left;
}

li a {
  display: block;
  color: white;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
}

li a:hover{
  background-color: #111;
  cursor:pointer;
}
</style>
<script>
//បង្កើត​ឈ្មោះ «player» មួយ​ទុក​សំរាប់ភ្ជាប់​​ទៅ​នឹង​វត្ថុ​ដែល​ជា​ប្រដាប់​មើលវីដេអូ
var player;

/* ទាញ​យក​ក្បួន​ខ្នាត​ចាំបាច់​ពី​ប្រព័ន្ធ Facebook 
ទាក់ទងនឹងប្រដាប់មើល​វីដេអូ​ */
window.fbAsyncInit = function() {
  FB.init({
    appId: '{your-app-id}',
    xfbml      : true,
    version    : 'v3.2'
  });
    
/* បង្កើត​​ប្រដាប់​មើល​វីដេអូ Facebook មួយ​ភ្ជាប់​ទៅ​នឹង​​​ឈ្មោះ​ «player» នៅ​ខាង​លើ​
សំរាប់​ដាក់​ក្នុង​ធាតុ div ដែល​មាន​ថ្នាក់​ជា «fb-video» នៅ​ខាង​ក្រោម​។ */
  FB.Event.subscribe('xfbml.ready', function(msg) {
    if(msg.type === 'video'){
      player = msg.instance;

      //ភ្ជាប់​ហេតុការណ៍ «startedPlaying» ទៅ​នឹង​ក្បួន​មួយ
      player.subscribe('startedPlaying', function(e) {
        //ការធ្វើ​អោយ​ផ្ទៃ​របស់​ browser ទៅ​ជា​ខ្មៅ
        $('.main-outer').css("background-color","black");
      });       

      //ភ្ជាប់​ហេតុការណ៍ «paused» ទៅ​នឹង​ក្បួន​មួយ​ទៀត
      player.subscribe('paused', function(e) {
        //ការធ្វើ​អោយ​ផ្ទៃ​របស់​ browser ទៅ​ជា​ស​វិញ
        $('.main-outer').css("background-color","white");
      }); 

      //ភ្ជាប់​ហេតុការណ៍ «finishedPlaying» ទៅ​នឹង​ក្បួន​មួយ​ទៀត
      player.subscribe('finishedPlaying', function(e) {
        //ការធ្វើ​អោយ​ផ្ទៃ​របស់​ browser ទៅ​ជា​ស​វិញ
        $('.main-outer').css("background-color","white");
      }); 

    }
  });
};
</script>


<div id="fb-root"></div>
<script async defer src="https://connect.facebook.net/en_US/sdk.js"></script>


<div class="fb-player">
<div
  class="fb-video" 
  data-href="https://www.facebook.com/video.php?v=10153231379946729" 
  data-width="500" 
  data-allowfullscreen="true"></div>
</div>




<script >
// កូដ​ចាំបាច់​សំរាប់​ធ្វើ​អោយ​ទំហំប្រដាប់​មើល​វិដេអូ​​មាន​លក្ខណៈ «responsive»
var playerWidth = $('.fb-player').css('width');
$(".fb-video").attr("data-width",playerWidth);

/* ក្បួន​ទាំងបី​ខាង​ក្រោម​នេះ ប្រើ​សំរាប់​ឆ្លើយ​តប​ទៅ​នឹង​ការចុច​ menu 
ដែលជា​​ពាក្យថា «លេង» «សំរាក» និង «បិទ​សំលេង» ។ */
function unmute(){
​  player.unmute();
}

function play(){
  player.play();
}

function pause(){
  player.pause();
}
</script>

នៅ​លើបន្ទាត់លេខ 21​ គឺ​ជាការភ្ជាប់​ហេតុការណ៍ឈ្មោះ «startedPlaying»​ ដែល​នឹង​ត្រូវ​បង្កើត​ឡើង​ដោយ​ប្រដាប់មើល​វីដេអូ​ឈ្មោះ player នៅ​ពេល​ដែល​វា​ចាប់​ផ្តើម​លេង​វីដេអូ​។ ដូចនេះ នៅ​ពេល​ដែល​វីដេអូ​ចាប់​ផ្តើម​​លេង ក្បួន​ជាប​នឹង​ហេតុការណ៍​នេះនឹង​ត្រូវ​យក​ទៅ​ប្រើ​ជា​ស្វ័យប្រវត្តិ ដែល​ជា​ប្រការ​ធ្វើ​អោយ​ផ្ទៃ​របស់​ browser ក្លាយ​ទៅ​ជា​ខ្មៅ​។

នៅ​លើបន្ទាត់លេខ 27 គឺ​ជាការភ្ជាប់​ហេតុការណ៍ឈ្មោះ «paused»​ ដែល​នឹង​ត្រូវ​បង្កើត​ឡើង​ដោយ​ប្រដាប់មើល​វីដេអូ​ឈ្មោះ player នៅ​ពេល​ដែល​វា​ស្ថិត​ក្នង​ស្ថានភាពសំរាក​។ ដូចនេះ នៅ​ពេល​ដែល​ប្រដាប់មើលវីដេអូ​ស្ថិតក្នុង​ភាព​សំរាក ក្បួន​ជាប​នឹង​ហេតុការណ៍​នេះនឹង​ត្រូវ​យក​ទៅ​ប្រើ​ជា​ស្វ័យប្រវត្តិ ដែល​ជា​ប្រការ​ធ្វើ​អោយ​ផ្ទៃ​របស់​ browser ក្លាយ​ទៅ​ជា​ពណ៌​សវិញ​។​

នៅ​លើបន្ទាត់លេខ 33 គឺ​ជាការភ្ជាប់​ហេតុការណ៍ឈ្មោះ «finishedPlaying»​ ដែល​នឹង​ត្រូវ​បង្កើត​ឡើង​ដោយ​ប្រដាប់មើល​វីដេអូ​ឈ្មោះ player នៅ​ពេល​ដែល​វា​ស្ថិត​ក្នង​ស្ថានភាព​លេង​ចប់​​។ ដូចនេះ នៅ​ពេល​ដែល​វីដេអូ​ត្រូវ​លេង​ចប់ ក្បួន​ជាប​នឹង​ហេតុការណ៍​នេះនឹង​ត្រូវ​យក​ទៅ​ប្រើ​ជា​ស្វ័យប្រវត្តិ ដែល​ជា​ប្រការ​ធ្វើ​អោយ​ផ្ទៃ​របស់​ browser ក្លាយ​ទៅ​ជា​ពណ៌ស​វិញ​​ដែរ​៕​