1.html代码:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<title>02面向对象版本的进度条</title>
<style>
body {
padding: 0;
margin: 0;
background-color: #f0f0f0;
overflow: hidden;
}
</style>
<script src="konva.js"></script>
<script src="progressBar.js"></script>
</head>
<body>
<div id="container">
</div>
<script>
//创建舞台
var stage = new Konva.Stage({
container: 'container',
width: window.innerWidth,//全屏
height: window.innerHeight
});
//创建层
var layer = new Konva.Layer();
stage.add(layer);
//中心点坐标
var cenX = stage.width() / 2;
var cenY = stage.height() / 2;
var option = {//把参数设置成对象形式;
x: 1/8 * stage.width(), //进度条x坐标
y: 1/2 * stage.height(), //进度条y坐标
w: 3/4 * stage.width(), //进度条的宽度
h: 1/12 * stage.height(), //进度条的高度
fillStyle: 'red', //进度条内部矩形的填充的颜色
strokeStyle: 'blue' //进度条的外边框的颜色
};
// 创建进度条对象实例;在new的时候调用初始化值;
var p = new ProgressBar( option );
//把进度条放到 层中
p.addToGroupOrLayer( layer );
//渲染层
layer.draw();
p.changeValue( .5 );
</script>
</body>
</html>

2.js代码:

 function ProgressBar( option ) {
//new 构造函数执行的时候,调用 内部的初始化方法。
this._init( option );
} ProgressBar.prototype = {
//类初始化的时候:创建内部矩形, 外部矩形,然后把两个矩放到goroup里面去。
_init: function( option ) {
this.x = option.x || 0; //进度条的x坐标
this.y = option.y || 0; // 进度条的y坐标
this.w = option.w || 0; //进度条的宽度
this.h = option.h || 0; //进度条的高度 this.fillStyle = option.fillStyle || 'red';
this.strokeStyle = option.strokeStyle || 'red'; //定义的内部的进度条的矩形
var innerRect = new Konva.Rect({
x: this.x, // stage.width(),获得舞台的宽度, x:设置当前矩形x坐标
y: this.y,
width: 0, //设置矩形的宽度
height: this.h, //设置矩形的高度
fill: this.fillStyle, //设置矩形的填充的颜色
cornerRadius: 1/2 * this.h, //设置进度条的圆角。
id: 'innerRect', //设置当前矩形的ID,以便于后面进行使用ID选择器
name: 'ss' //设置name,方便后面用类选择器。
}); this.innerRect = innerRect; //添加一个外边框的 矩形
var outerRect = new Konva.Rect({
x: this.x, // stage.width(),获得舞台的宽度, x:设置当前矩形x坐标
y: this.y,
width: this.w, //设置矩形的宽度
height: this.h, //设置矩形的高度形的高度
stroke: this.strokeStyle, // 设置了stroke那么,矩形就进行描边
strokeWidth: 4, // 设置边框的宽度,
cornerRadius: 1/2* this.h,
}); //html :
// 创建一个组, 相当于html中的父盒子。把其他两个盒子包在里面;当给其设置坐标时,相当于进行绝对定位,这时候的子盒子是跟着父盒子进行定位的;
this.group = new Konva.Group({
x: 0,
y: 0
});
this.group.add( innerRect );//把内部的矩形放到组中
this.group.add( outerRect );
},
//此方法是将 用户传进来的需要改变的进度 运行动画
changeValue: function( val ) {
//传进来的进度
if( val > 1 ) { // 1 - 100 vs 0 -1 =>0.5
val = val /100;
}
//做动画 val = .3 .7
var width = this.w * val; //最终进度条内部矩形的 宽度。 // 通过id选择器去查找内部的子元素。
var innerRect = this.group.findOne('#innerRect');
// var innerRect = this.group.findOne('Rect'); var innerRect = this.innerRect; // to动画系统: 让我们的物件 变换到某个状态
// 让我们的 物件从 当前状态 到 下面设置的状态,
innerRect.to({
width: width,
duration: .3,
easing: Konva.Easings.EasIn
}); },
// arg: 传进来的层或者 是组,
//此方法是:把当前创建的进度条 添加到 层中。
addToGroupOrLayer: function( layer ) {
layer.add( this.group );
}
}

利用面向对象思想封装Konva动态进度条的更多相关文章

  1. bootstrap得动态进度条

    Bootstrap的动态进度条: html: 创建一个modal   这里使用fade先将modal隐藏起来,然后modal里面嵌入progress 代码很简单 <div class=" ...

  2. 原生JS面向对象思想封装轮播图组件

    原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能 ...

  3. Qt实现炫酷启动图-动态进度条

    目录 一.简述 二.动效进度条 1.光效进度条 2.延迟到达进度条 3.接口说明 三.启动图 1.实现思路 2.背景图切换 四.测试 1.构造启动图 2.背景图 3.其他信息 4.事件循环 五.源码 ...

  4. 超简单CSS3水平动态进度条+小圆球+背景色渐变

    实现的的效果图如下:效果是动态加载的 代码如下: <!DOCTYPE html> <html lang="en"> <head> <met ...

  5. 使用Konva创建进度条

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. bootstrap与jQuery结合的动态进度条

    此款进度条实现的功能: 1.利用了bootstrap的进度条组件. a.在最外层的<div>中加入class .progress,在里层<div>加入class .progre ...

  7. Vue实现mp3音乐播放及动态进度条

    今天碰到一个Vue点击mp3播放及进度条动态走动的小功能,记录一下: 首先是通过HTML5 audio标签引入音频: <template> <div class="x-fo ...

  8. 使用面向对象思想封装js(附实例)

    平时在写js时应该用面向对象思想将每一组功能封装成一个模块,可实现模块间的高内聚低耦合.重用.结构清晰........... 如果页面中逻辑复杂.功能多,不使用模块封装是不可想象的,维护起来非常复杂. ...

  9. 利用CoreAnimation实现一个时间的进度条

    (个人原创,转载请注明出处 http://www.cnblogs.com/pretty-guy/p/7460334.html) 在iOS中实现进度条通常都是通过不停的设置progress来完成的,这样 ...

随机推荐

  1. java面试第三天

    类和对象: 类:主观抽象,是对象的模板,可以实例化对象----具有相同属性和行为的对象的集合. 习惯上类的定义格式: package xxx; import xxx; public class Xxx ...

  2. gulp 常用插件汇总

    2017-07-26更新:图片压缩插件使用gulp-smushit,gulp-smushit压缩率比较大,gulp-imagemin 图片压缩插件压缩率不明显. 见下图压缩率: 1.gulp安装 参照 ...

  3. ConcurrentHashMap并不是绝对线程安全的

    import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; publi ...

  4. Android中保存静态秘钥实践(转)

    本文我们将讲解一个Android产品研发中可能会碰到的一个问题:如何在App中保存静态秘钥以及保证其安全性.许多的移动app需要在app端保存一些静态字符串常量,其可能是静态秘钥.第三方appId等. ...

  5. 【shell】正则表达式

    当一个文件或命令输出中抽取或过滤文本时,可以使用正则表达式(RE),正则表达式是一些特殊或很不特殊的字符串模式的集合. 在Linux中grep.awk.sed均可解释正则 1.基本元字符集及其定义 ^ ...

  6. linux YUM常用 命令

    语法 yum(选项)(参数) 选项 -h:显示帮助信息: -y:对所有的提问都回答“yes”: -c:指定配置文件: -q:安静模式: -v:详细模式: -d:设置调试等级(0-10): -e:设置错 ...

  7. Centos定时执行python脚本

    其实就是linux的定时任务.老记不住参数,这次写下来,省着老百度.本文没有技术含量,请大家不要吐槽. ================================================ ...

  8. JS操作frame框架

    1 框架编程概述 一个Html 页面可以有一个或多个子框架,这些子框架以<iframe>来标记,用来显示一 个独立的Html 页面.这里所讲的框架编程包括框架的自我控制以及框架之间的互相访 ...

  9. POJ----The Suspects

    The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions: 18890   Accepted: 9150 Des ...

  10. JFinal连接数据库配置说明

    本文采用的是加载配置文件的形式和数据库进行交互 ps:数据库采用的是postgresql 1.加载配置文件 public void configConstant(Constants me) { Pro ...