zoukankan      html  css  js  c++  java
  • 实现数字电视机顶盒画面的纯键盘和遥控操作网页

    今天完成了一个项目,是要做一个广东电视局给的项目,实现一个用键盘或遥控控制的页面,重构工作我就不说了吧,来说说实现键盘控制的问题。

    键盘控制想想好像很简单,但是其实这里面要注意的问题也有很多,我的思路是这样的:

    1、重构的时候定义一个active类,用来给当前选中的元素添加active样式(对了,由于项目需求,我在做的时候把类似a,input这样的自带焦点的元素都

    换成了div和span来替代,因为机顶盒它自身会给这些元素带一个active样式,一个红框,但是太丑了,所以就自己定制化)

    2、把重构的页面划分为若干个区域,在JS中为每个区域创建一个数组,这里我用btn*(*表示阿拉伯数字)来表示,这样,我们就得到了若干个数组,再用

    index来表示每个数组中的元素下标,我们就可以很方便地访问每个元素

    3、非常关键的一个地方,需要创建一个函数,来指导你当前的这个数组名是指哪个数组,所以就用到了一下这个代码:

    [html] view plaincopy
     
    1. var main=function(e){  
    2.             key=e.keyCode;  
    3.             keyControl(key);  
    4.             if(currBtns==1){  
    5.                 dom=btn1[index];  
    6.             }else if(currBtns==2){  
    7.                 dom=btn2[index];  
    8.             }else if(currBtns==3){  
    9.                 dom=btn3[index];  
    10.             }else if(currBtns==4){  
    11.                 dom=btn4[index];  
    12.             }else if(currBtns==5){  
    13.                 dom=btn5[index];  
    14.             }else if(currBtns==5){  
    15.                 dom=btn5[index];  
    16.             }else if(currBtns==6){  
    17.                 dom=btn6[index];  
    18.             }else if(currBtns==7){  
    19.                 dom=btn7[index];  
    20.             }else if(currBtns==8){  
    21.                 dom=btn8[index];  
    22.             }else if(currBtns==9){  
    23.                 dom=btn9[index];  
    24.             }  
    25.   
    26.             $(predom).removeClass("active");  
    27.             $(predom).removeClass("btnActive");  
    28.             $(predom).removeClass("playing");  
    29.             predom=dom;  
    30.             if(dom==btn8[index]){  
    31.                 $(dom).addClass("btnActive");  
    32.             }  
    33.             else if(dom==btn5[index]||dom==btn6[index]){  
    34.                 $(dom).addClass("playing");  
    35.             }  
    36.             else  
    37.             {  
    38.                 $(dom).addClass("active");  
    39.             }  
    40.               
    41.         }  

    并且要让它在一开始的时候就绑定到键盘时间上:

    [html] view plaincopy
     
    1. document.body.onkeydown=main;  

    最后通过WASD和enter的键盘码来访问每个元素,这里因为是商业项目,所以不能透露太多,给出“UP”操作时的代码以供参考:

    [html] view plaincopy
     
    1. var keyControl=function(key){  
    2.             if(key==keyCode.up){  
    3.                 if(currBtns==1){  
    4.                     if(index>0)  
    5.                         index--;  
    6.                 }  
    7.                 else if(currBtns==2){  
    8.                     if(index>0)  
    9.                         --index;  
    10.                     else{  
    11.                         currBtns=1;  
    12.                         index=btn1.length-1;  
    13.                     }  
    14.                 }  
    15.                 else if(currBtns==4){  
    16.                     currBtns=3;  
    17.                     index=0;  
    18.                 }  
    19.                 else if(currBtns==5){  
    20.                     if(index>0)  
    21.                         index--;  
    22.                 }  
    23.                 else if(currBtns==6){  
    24.                     if(index>0)  
    25.                         index--;  
    26.                     else{  
    27.                         currBtns=5;  
    28.                         index=0;  
    29.                     }  
    30.                 }  
    31.                 else if(currBtns==7){  
    32.                     if(index>0)  
    33.                         index--;  
    34.                 }  
    35.                 else if(currBtns==8){  
    36.                     if(index==0){  
    37.                         currBtns=2;  
    38.                         index=0;  
    39.                     }  
    40.                     else if(index==1){  
    41.                         currBtns=4;  
    42.                         index=0;  
    43.                     }  
    44.                     else if(index==2){  
    45.                         currBtns=6;  
    46.                         index=0  
    47.                     }  
    48.                     else if(index==3){  
    49.                         currBtns=7  
    50.                         index=0;  
    51.                     }  
    52.                 }  


    效果图:


    如有疑问,欢迎留言

  • 相关阅读:
    操作系统要点总结
    ARP的通信过程
    判断网段、子网、网络号
    C++要点总结
    枚举类型
    C指针总结
    C运算符总结
    替换空格
    WCF编写时候的测试
    WCF创建到使用到发布
  • 原文地址:https://www.cnblogs.com/danielweb/p/4361239.html
Copyright © 2011-2022 走看看