美文网首页让前端飞
面向对象思想的audio顺序播放开发

面向对象思想的audio顺序播放开发

作者: 何暖暖 | 来源:发表于2017-03-01 16:04 被阅读234次

    想必有很多像我一样的开发者,总是为了做而做,日复一日,做着没营养的工作,其实技术这种东西,真的是说难不难,但是说简单也不简单,关键看做的人“心态”。尤其js这项语言,很多人提起它时,总会说又爱又恨,其实想学好js并非什么异想天开的事,只要 手到  心到  就一定会做好 。话不多说,还得靠自己认真付出,脚踏实地。

    首先js对于每个开发者来讲并不陌生,它基本的语法,在这里我也不细说啦,就说说最近项目用到的编程思想吧,“面向对象编程” 

    对象:1、JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...

               2、JavaScript 提供多个内建对象,比如 String、Date、Array 等等。

              3、对象只是带有属性和方法的特殊数据类型。

    项目中的对象思想应用场景:(做一个音频的顺序播放器:直播平台)

    直接上代码:

    Dom结构:

    css结构:

    /*语音***/

    .speak-content i {

    display: inline-block;

    width: 1.06837rem;

    height: 1.06837rem;

    border-radius: 50%;

    color: #00acff;

    text-align: center;

    margin-left: 6px;

    -webkit-user-select: none;

    -moz-user-select: none;

    -ms-user-select: none;

    vertical-align: middle;

    box-shadow: 0 0 1px rgba(103,132,146,.3);

    }

    .speak-content var {

    position: relative;

    right: -2rem;

    top: 2rem;

    width: 1.282rem;

    height: 1.68037rem;

    color: #666;

    float: right;

    margin-right: -0.0427rem;

    margin-top:-2.495726rem;

    }

    .audio-bar-area {

    /*height: 100%;*/

    position: relative;

    display: inline-block;

    width: 80%;

    /* right: 1.28205rem;*/

    margin-left:0.2rem;

    /*  margin-top: 0.5rem;*/

    }

    .speak-audio-content{

    font-size: 0;

    }

    [data-audio-play="yes"]{

    background:url(close.png) no-repeat center center;

    }

    [data-audio-play="no"]{

    background:url(open.png) no-repeat center center;

    }

    .audio-bar-area::before {

    position: absolute;

    left: .1rem;

    right: .1rem;

    height: .05rem;

    background-color: #c5e4f3;

    border-radius: 1px;

    /* top: 50%;*/

    -webkit-transform: translateY(-50%);

    transform: translateY(-50%);

    content: '';

    }

    .front-bar {

    position: absolute;

    display: block;

    left: 1rem;

    height: .2rem;

    background-image: -webkit-linear-gradient(left,#00acff,#00eaff);

    background-image: linear-gradient(90deg,#00acff,#00eaff);

    border-radius: 1px;

    top: 50%;

    -webkit-transform: translateY(-50%);

    transform: translateY(-50%);

    }

    .audio-bar-area .block {

    display: block;

    height: 0.3846rem;

    width: 0.55rem;

    position: absolute;

    left: 0;

    transform: translateY(-50%);

    -webkit-transform: translateY(-50%);

    -moz-transform: translateY(-50%);

    -ms-transform: translateY(-50%);

    -o-transform: translateY(-50%);

    background-color: #fff;

    box-shadow: 0 0 0 1px rgba(197,228,243,.5) inset;

    border-radius: .2rem;

    background-clip: padding-box;

    box-sizing: content-box;

    border-radius: 1.3rem;

    }

    .audio-bar-area .block::before {

    display: block;

    width: 1px;

    height: .3rem;

    background-color: #c5e4f3;

    margin: .1rem auto;

    top: 50%;

    content: '';

    }

    重点来了、、、

    js结构:

    最终呈现效果:

    备注:这个呢就是一个在线直播功能的,也就是语音直播的,主要功能就是顺序播放语音的。

    技术解析:

    这个小功能我也是用的对象思想构建的

    1、首先无论做成么项目,我们都要习惯性的建个对象,这里我创建的是LIVE对象,

    方式:var LIVE = {};//直播

    2、我们要写这个对象里面的初始化函数:init();

    方式:var LIVE = {

                     init:function(){//LIVE对象的方法

                    }

    };

    3、我们写好这个对象,那要先执行下,也就是执行init函数;

    方式:var LIVE = {

                      init:function(){

                   }

                  LIVE.init();//这里执行的是对象的私有init方法

    };

    以上是写面向对象的一个基础结构,现在我们在具体的看看项目中的思想,

    1、init函数获取一些结构的基础信息,及初始化调用的方法

    2、events()函数里面写事件 在init里面被执行时要用this调用,表示是LIVE的私有

    方式:this.events();

    在本例子中,这个事件函数主要给播放按钮audioPlayCtrl加事件 之后调用播放的控制函数的 _this.playCtrolFun($this);

    3、playCtrolFun()函数主要写一些 播放的控制的,像是当前播放,点击之后是否播放或暂停状态,

    4、watchPlay()函数主要给当前播放的audio加监听事件的,像播放的进度,播放完成做什么操作像顺序播放下一个

    5、。。。。。

    6、LIVE.init({

                 el: '.audio1',

                  auto: true

    });在调用中给这个init传参,函数用option接收的

    之后我们用参数控制是否顺序播放

    ps:以上就是我对这个功能点的面向对象思想的总结,对象就是这样,函数套函数,this指向的变动。建议学习面向对象的时候看看,call apply bind函数 有助于理解this指向

                                             thank you

    相关文章

      网友评论

        本文标题:面向对象思想的audio顺序播放开发

        本文链接:https://www.haomeiwen.com/subject/rhzqgttx.html