利用konva框架用面向对象的方式制造进度条

konva是一个canvas的框架,里面有些用法和jQuery十分相似,功能也十分强大

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="box"></div>
<script src="js/konva.min.js"></script>
<script>
    /****************面向对象的封装***************/
    function Bar(option) {
        this._init(option);
    }

    Bar.prototype = {
        _init: function (option) {
            this.x = option.x;
            this.y = option.y;
            this.width = option.width;
            this.height = option.height;
            this.fillcolor = option.fillcolor;
            this.stroke = option.strokeStyle;
            this.strokeWidth = option.strokeWidth;
            this.corner = option.corner;
        },
        render: function (layer) {
            var group = new Konva.Group({
                x:0,
                y:0
            });
            layer.add(group);
            var outRect = new Konva.Rect({
                x:innerWidth/8,
                y:innerHeight/2,
                width:innerWidth*3/4,
                height:innerHeight/20,
                stroke:this.stroke,
                strokeWidth:this.strokeWidth,
                cornerRadius:this.corner
            });
            group.add(outRect);
            var inRect = new Konva.Rect({
                x:innerWidth/8,
                y:innerHeight/2,
                width:innerWidth*3/4,
                height:innerHeight/20,
                fill:this.fillcolor,
                cornerRadius:this.corner,
                id:"inRect"
            });
            group.add(inRect);
            group.draw();
        },
        move: function () {
            stage.find("#inRect").to({
                width:this.width/3,
                yoyo:true
            })
        }
    };

    /****************应用操作***************/
    var stage = new Konva.Stage({
        width:innerWidth,
        height:innerHeight,
        container:"box"
    });

    var layer = new Konva.Layer({});

    stage.add(layer);

    var bar = new Bar({
        x:stage.width()/8,
        y:stage.height()/2,
        width:stage.width()*3/4,
        height:stage.height()/10,
        strokeStyle:"#ccc",
        strokeWidth:6,
        fillcolor:"red",
        corner:6
    });

    bar.render(layer);
    bar.move();
    stage.draw();
</script>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,015评论 25 709
  • 读完包法利,我对她是又爱又恨,爱她对生活的追求,对爱的追求,恨她不懂什么叫爱情可贵,眼前可贵。 艾玛是一个魅力十足...
    zzzzzy_9131阅读 649评论 0 5
  • 吃饱了的时光 才是人生 我坐在天台 一个人 冷成了猪 哆嗦着对天念诗: “我的塞纳河啊 你是那么遥不可及 我的塞纳...
    留子尧阅读 164评论 0 2
  • 这其实是一篇励志长文 记忆中从小到大就和“漂亮”二字没沾过一点关系。 -01- 说来也怪,我的长相完美的继承了爸妈...
    伍月小姐阅读 1,618评论 59 67
  • 前苏联著名教育家苏霍姆林斯基说过:“儿童的智慧在他的手指尖上。同时 让幼儿动手操作不仅可以直接促进孩子的视...
    joywangkf阅读 702评论 0 0