angular与TimelineMax实现进度条的动态加载(js)

这里进度条的样式采用bootstrap提供的进度条,定义进度条所需的数据,如:
$scope.simulationProgressData = { width: 1, show: false, dayList: ‘’, left:50, };

因进度条中含有多个不同的数据,因此将所需要显示的数据存入dayList,使用ng-repeat将dayList中所有的数据进行显示

 <div ng-init="simulationProgressData" ng-show="simulationProgressData.show" style="position:absolute;bottom:2px;width:100%;opacity:0.7; height: 60px;">

            <div class="progress" id="simulationProgressBar" style="width:100%;margin:auto;bottom:20px;position:absolute;border-radius:20px">
                <div class="progress-bar progress-bar-info progress-bar-striped" id="progressbar" role="progressbar" aria-valuenow="60"
                     aria-valuemin="0" aria-valuemax="100" ng-style="{width:simulationProgressData.width+'%'}" ng-bind="simulationProgressData.width+'%'">
                </div>
            </div>
            <div ng-repeat="x in simulationProgressData.dayList" ng-bind="x.day" ng-style="{left:x.left+'%',bottom:x.bottom+'%'}" style="position :absolute;bottom:0px;font-size:10px;color:white"></div>
        </div>

定义动画progressBarAni 与进度条的初始值为progressbarnum ,通过speed时间,将其运动至progressbarnum1。如progressbarnum =0,progressbarnum1=100,speed=10,则为进度条从0到100耗时10s。若多个时间段的进度同时使用了该进度条,则进行多个调用,并根据时间的先后设置改动画的delay。在动画的onUpdate方法中,使用$apply不断刷新进度条的width,从而实现进度条的动态加载

var progressBarAni = new TimelineMax();
var beginValue= { value: progressbarnum };
                    progressBarAni.to(beginValue, speed, {
                        value: progressbarnum1, ease: Linear.easeNone, delay: n* speed, onUpdate: function () {
                            spoce.$apply(spoce.simulationProgressData.width = parseInt(beginValue.value));
                            
                        }, onComplete: function () {
                            progressbarnum = tmpProper.value
                            if (progressbarnum == 100) {
                                for (var i = 0; i < Model.modelDiv.progressAni.length; i++) {
                                    Model.modelDiv.progressAni[i].clear();
                                }
                            }
                            
                            
                        }
                    });

可定义一个数组,将每次的动画存入数组,方便后续使用,若需要暂停进度,则遍历数组中所有的动画对象并调用pause();若继续,则调用resume(),若停止则clear()。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值