面向对象canvas_进度条-Konva.js

2023-12-26 22:48

本文主要是介绍面向对象canvas_进度条-Konva.js,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

效果图如下:

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>01进度条案例</title><style>body {padding: 0;margin: 0;background-color: #f0f0f0;overflow: hidden;}</style><script src="bower_components/konva/konva.js"></script><script src="js/zxjstage.js"></script>
</head>
<body><!-- 存放canvas画布的容器 ,这个必须要有 --><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 option={x: 1/8 * stage.width(),		//进度条x坐标y: 1/2 * stage.height(),	//进度条y坐标width: 3/4 * stage.width(),		//进度条的宽度height: 1/12 * stage.height(),	//进度条的高度fill: 'red',			//进度条内部矩形的填充的颜色stroke: 'blue',strokeWidth: 4}//将option的内容放入Progress中var s=new ProgressBar(option);//新建s.addToGroupOrLayer(layer);//调用js中的函数,传值//将矩形添加到层上,由于矩形建立在js中,所以必须到js中添加/*layer.add(innerRect);//layer.add(outerRect);function addToGroupOrLayer(layer){layer.add(innerRect);layer.add(outerRect);}*/s.changeValue(70);layer.draw();	</script>
</body>
</html>

 

 

 

javascript

 

function ProgressBar(option){this._init(option);
}
//属性:  width, height , x, y  ,innerStyle, outerStyle , cornerRadius
//行为:修改进度条的进度  changeValue( val )     
// 把进度条添加到层:addToGroupOrLayer( arg );
ProgressBar.prototype={_init:function(option){this.width=option.width;this.height=option.height;this.x=option.x;this.y=option.y;this.fill=option.fill;this.stroke=option.stroke;this.strokeWidth=option.strokeWidth;//线条宽度// this.rect=option.rect;//传递过来的矩形var innerRect=new Konva.Rect({x:this.x,y:this.y,width:0,height:this.height,fill:this.fill,//填充色cornerRadius: 1/2* this.height,id:'innerRect',name:'zzz'});this.innerRect=innerRect;//填充的内部矩形var outerRect=new Konva.Rect({x:this.x,y:this.y,width:this.width,height:this.height,stroke:this.stroke,//框的线条颜色cornerRadius: 1/2* this.height});this.outerRect=outerRect;this.Group=new Konva.Group({x:0,y:0});this.Group.add(innerRect);//将创建的矩形添加到父盒子Group中,有利于整理当创建多个矩形时调用this.Group.add(outerRect);},addToGroupOrLayer:function(layer){layer.add(this.Group);//将父亲盒子Group添加层上去},changeValue: function( val ) {//传进来的进度if( val > 1 ) { //   1 - 100   vs   0 -1     =>0.5val = val /100;}//做动画 val = .3 .7var width2 = this.width * val; //最终进度条内部矩形的 宽度。// 通过“id选择器”去查找内部的子元素。对应innerRect里面的IDvar innerRect = this.Group.findOne('#innerRect');// find:返回一个数组,findOne:返回一个//类选择器,可能会查找多个// var innerRect = this.Group.findOne('.zzz');//标签选择器// var innerRect = this.Group.findOne('Rect');// 和Jquery中的查找方式很相似// var innerRect = this.innerRect;// to动画系统: 让我们的物件 变换到某个状态// 让我们的 物件从 "当前状态 到 下面设置的状态,innerRect.to({width: width2,duration: .3,//当前的状态到宽度为width2的状态,持续0.3秒easing: Konva.Easings.EasIn//动画效果});}
}

 

 

 

 

 

 

 

这篇关于面向对象canvas_进度条-Konva.js的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/541051

相关文章

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

VSCode中配置node.js的实现示例

《VSCode中配置node.js的实现示例》本文主要介绍了VSCode中配置node.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一.node.js下载安装教程二.配置npm三.配置环境变量四.VSCode配置五.心得一.no

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

基于Canvas的Html5多时区动态时钟实战代码

《基于Canvas的Html5多时区动态时钟实战代码》:本文主要介绍了如何使用Canvas在HTML5上实现一个多时区动态时钟的web展示,通过Canvas的API,可以绘制出6个不同城市的时钟,并且这些时钟可以动态转动,每个时钟上都会标注出对应的24小时制时间,详细内容请阅读本文,希望能对你有所帮助...

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N