ហេតុការណ៍ YouTube
តើ «ហេតុការណ៍» ជា​អ្វី​ទៅ? យោង​តាម​និយម​ន័យ​ទូទៅ «ហេតុការណ៍​»​ (event) គឺ​ជា​រឿងរ៉ាវ​ទាំងឡាយ​ណា​ដែល​កើតមាន​ឡើង​ដោយ​មិន​បាន​ដឹង​ជា​មុន​ ឧទាហរណ៍​ដូចជា​ ការត្រូវ​ឆ្នោត ការជួប​មិត្ត​សំលាញ់ចាស់​​ជា​ចៃដន្យ​ជា​ដើម​​​។

ទន្ទឹម​នឹង​នេះ​ មាន​របៀប​ជា​ច្រើន​​នៅ​ក្នុង​ការសរសេរ​កម្មវិធី​កំព្យូទ័រ ហើយ​ក្នុង​ចំណោម​របៀប​ទាំងនោះ​ មាន​របៀបសរសេរ​​កម្មវិធី​ម៉្យាង​​ហៅ​ថា Event-Driven Programming ​ដែល​អាច​ត្រូវ​បក​ប្រែ​ជា​ភាសា​ខ្មែរ​មក​ថា ការសរសរកម្មវិធី​ដោយ​យោង​​លើ​​ «ហេតុការណ៍» ឬ​​អាច​និយាយ​បាន​ម៉្យាង​ទៀត​ថា កម្មវិធី​មាន​ដំណើរ​ការ​អាស្រ័យ​ទៅ​លើ​ «ហេតុការណ៍» ផ្សេង​​ៗ​ដែល​កើត​មាន​ឡើង​ដោយ​សារ​អ្នក​ប្រើប្រាស់​កម្មវិធី​ចុច​នេះ​ឬ​ចុច​នោះ​។

សំរាប់​អ្នកប្រើប្រាស់​កម្មវិធី​កំព្យូទ័រ រឿង​នេះ​មិន​មែន​ជា​រឿង​ថ្មី​នោះទេ គឺ​ជា​ទំលាប់​របស់​ពួក​គេ​ទៅ​ហើយ​នូវ​ការចុចនេះឬ​​ចុច​នោះ​ដើម្បី​ចង់​បើក​មើល​អ្វី​ម៉្យាង​នោះ​។ ក៏​ប៉ុន្តែ​ សំរាប់​អ្នក​សរសេរ​កម្មវិធី​កំព្យូទ័រ នៅ​ពេល​ដែល​អ្នក​ប្រើប្រាស់​​ចុច​នេះ​ឬ​ចុច​នោះ​ គឺ​ជា​ការបង្កើត​ «ហេតុការណ៍» ផ្សេង​ៗ​អោយ​កើត​មាន​ឡើង​​នៅ​ក្នុង​កម្មវិធី​កំព្យូទ័រ​​​។

ដូចនេះ នៅ​ពេលដែល​អ្នក​ប្រើប្រាស់​ចុច​អ្វី​ម៉្យាង «ហេតុការណ៍» មួយ​នឹង​កើត​មាន​ឡើង ហើយ​កម្មវិធី​កំព្យូទ័រ​នឹង​ដំណើរការ​​រួច​​​ផ្តល់​នូវ​លទ្ធផលអ្វី​ម៉្យាង​ដែរ​ ដើម្បី​ឆ្លើយ​តប​ទៅ​នឹង «ហេតុការណ៍» ដែល​បាន​កើត​​មាន​ឡើង​នោះ​។ សរុបមក ការសរសេរ​កម្មវិធី​កំព្យូទ័រ​ដើម្បី​ឆ្លើយ​តប​ទៅ​នឹង​ការចុច​ផ្សេង​ៗ​របស់​អ្នក​ប្រើប្រាស់​ ហៅ​ថា ការសរសេរ​កម្មវិធី​ដោយ​យោង​លើ​ «ហេតុការណ៍»

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

ឧបមា​ថា នៅ​ពេល​ដែល​ប្រដាប់​មើល​វីដេអូ YouTube ចាប់​ផ្តើម​ដំណើរការ ដែល​ជា​កត្តា​ធ្វើ​អោយ​​​ហេតុការណ៍ «YT.PlayerState.PLAYING» កើត​មានឡើង​ យើង​ចង់​អោយ​ 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> /*កូដ​​ខាង​ក្រោមនេះ គឺ​ជាការ​ចំលង​យក​ក្បួន​ខ្នាត​សំខាន់​ៗ​នៅ​ នៅ​ក្នុង​ប្រព័ន្ធ​ YouTube យកមកប្រើ​ទាក់ទង​នឹង​ប្រដាប់​ចាក់​វីដេអូ*/ var tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); /*កូដ​ខាង​ក្រោម​នេះ គឺ​ជាការយក្បួន​ខ្នាត​​នៅ​ក្នុង​ប្រព័ន្ធ​ YouTube យក​មក​បង្កើត​ប្រដាប់​ចាក់​វីដេអូ​ថ្មី​មួយ​ដាក់​ចូល​ទៅ​ក្នុង​ធាតុ​ដែល​មាន​ អត្តសញ្ញាណ​ជា «player» នៅ​ខាង​លើ​។*/ var player; function onYouTubeIframeAPIReady(){ player = new YT.Player('player', { height: '100%', width: '100%', videoId: 'M7lc1UVf-VE', playerVars: { controls: 0 }, events: { /*ការតភ្ចាប់​ហេតុការណ៍ «onStateChange» កើត​ឡើង​ពី​ការផ្លាស់​សភាព​លក្ខណៈ​ របស់​ប្រដាប់​មើល​វីដេអូ YouTube​ ទៅ​នឹង​ក្បួន​ «onPlayerStateChange» ។*/ 'onStateChange': onPlayerStateChange } }); } /*ក្បួន «onPlayerStateChange»​ ដែល​នឹង​ត្រូវ​យកទៅ​ប្រើជា​ស្វ័យ​ប្រវត្តិ ​​ នៅ​ពេល​ដែល​​ហេតុការណ៍ «onStateChange»​ កើត​មាន​ឡើង*/ function onPlayerStateChange(event) { if(event.data == YT.PlayerState.PLAYING){ /*បើ​ប្រដាប់មើលវីដេអូ​មាន​មាន​សភាព​ជា​កំពុង​លេង បញ្ជា​នៅខាង​ក្រោម​នេះ​នឹង​យក​ទៅ​អនុវត្ត​។*/ $('.main-outer').css("background-color","black"); }else if(event.data == YT.PlayerState.PAUSED){ /*បើ​ប្រដាប់មើលវីដេអូ​ស្ថិត​ក្នុង​សភាព​សំរាក បញ្ជា​​នៅខាង​ក្រោម​នេះ​នឹង​យក​ទៅ​អនុវត្ត​។*/ $('.main-outer').css("background-color","#ffffff"); }else if(event.data == YT.PlayerState.ENDED){ /*បើ​ប្រដាប់មើលវីដេអូ​មាន​មាន​សភាព​ជា​លេង​ចប់ បញ្ជា​​នៅខាង​ក្រោម​នេះ​នឹង​យក​ទៅ​អនុវត្ត​។*/ $('.main-outer').css("background-color","#ffffff"); } } /*ក្បួន​ទាំងបី​ខាង​ក្រោម​នេះ ប្រើ​សំរាប់​ឆ្លើយ​តប​ ទៅ​នឹង​ការចុច​ menu ដែលជា​​ពាក្យថា «លេង» «សំរាក» និង «ឈប់» ។*/ function stop(){ player.stopVideo(); } function play(){ player.playVideo(); } function pause(){ player.pauseVideo(); } </script>


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

ក្នុង​ករណី​​ប្រដាប់​មើល​វិដេអូ​ផ្លាស់​ប្តូរសភាព​​របស់​វាទៅ​ជា​​សភាព​កំពុងលេង ដែលមាន​តំលៃ​ស្មើ​នឹង YT.PlayerState.PLAYING បញ្ជា​នៅបន្ទាត់​លេខ 48 នឹង​ត្រូវ​យក​ទៅ​អនុវត្ត ដែល​នឹង​ធ្វើ​អោយ​ផ្ទៃ​របស់​ browser ប្រែ​ពណ៌​ជា​ខ្មៅ​​។

ក្នុង​ករណី​​ប្រដាប់​មើល​វិដេអូ​ផ្លាស់​ប្តូរ​សភាព​​របស់​វាទៅ​ជា​​សភាព​សំរាក ដែលមាន​តំលៃ​ស្មើ​នឹង YT.PlayerState.PAUSE បញ្ជា​នៅបន្ទាត់​លេខ 52 នឹង​ត្រូវ​យក​ទៅ​អនុវត្ត ដែល​នឹង​ធ្វើ​អោយ​ផ្ទៃ​របស់​ browser ប្រែ​ពណ៌​ជាស​វិញ​។

ក្នុង​ករណី​​ប្រដាប់​មើល​វិដេអូ​ផ្លាស់​ប្តូរ​សភាព​​របស់​វាទៅ​ជា​​សភាព​លេង​ចប់ ដែលមាន​តំលៃ​ស្មើ​នឹង YT.PlayerState.ENDED បញ្ជា​នៅបន្ទាត់​លេខ 56 នឹង​ត្រូវ​យក​ទៅ​អនុវត្ត ដែល​នឹង​ធ្វើ​អោយ​ផ្ទៃ​របស់​ browser ប្រែ​ពណ៌​ជា​ស​វិញ​​។