html5 strongeaseinout,Canvas開發庫封裝

news/2024/7/3 0:00:14

一、Canvas第三方類庫

1、常見的第三方類庫

konva.js

f2121560ed9d4c36db9d0bbda802df55.png

body{

margin:0;

}

//創建舞台

var stage=new Konva.Stage({

container:"#box",

width:window.innerWidth,

height:window.innerHeight

});

//創建層

var layer=new Konva.Layer({

});

stage.add(layer);

//創建圖形

var star=new Konva.Star({

x:stage.getWidth()/2,

y:stage.getHeight()/2,

innerRadius:80,

outerRadius:200,

fill:"Red"

});

layer.add(star);

//繪制層

layer.draw();

chart.js 圖表插件

eccharts 圖表插件(百度)

tree.js(3d webgl 庫)

二、第三方類庫Konva

1、Konva的結構

舞台(stage)-->層(layer)-->圖形

Statge -->Layer -->分組(-->分組-->)-->圖形Stage

|

+------+------+

| |

Layer Layer

| |

+-----+-----+ Shape

| |

Group Group

| |

+ +---+---+

| | |

Shape Group Shape

|

+

|

Shape

2、Konva繪制圖形

Konva.Rect

//創建舞台

var stage=new Konva.Stage({

container:"#box",

width:window.innerWidth,

height:window.innerHeight

});

//創建層

var layer=new Konva.Layer({

x:100,

y:100

});

stage.add(layer);

//創建一個組

var group=new Konva.Group({

x:100,

y:100

});

layer.add(group);

//創建矩形

var rect=new Konva.Rect({

x:0,

y:0,

width:100,

height:100,

stroke:"red"

});

group.add(rect);

layer.draw();

Konva.Circle//繪制圓形

var circle=new Konva.Circle({

x:stage.getWidth()/2,

y:stage.getHeight()/2,

radius:100,

stroke:"red",

fill:"green"

});

layer.add(circle);

Konva.Wedge//繪制扇形

var wedge=new Konva.Wedge({

x:200,

y:400,

radius:100,

fill:"yellow",

stroke:"orange",

angle:90,

rotation:-10

});

layer.add(wedge);

Konva.Line//繪制線條

var line1=new Konva.Line({

points:[700,100,900,200,800,400],

stroke:"skyblue",

strokeWidth:4,

lineCap:"round",

lineJoin:"round",

closed:true,

tension:true//曲線

});

layer.add(line1);

Konva.Star

Konva.Image

3、事件

點擊正方形改變圓角最后變成圓

//創建舞台

var stage=new Konva.Stage({

container:"#box",

width:window.innerWidth,

height:window.innerHeight

});

var layer=new Konva.Layer({

});

stage.add(layer);

var rect=new Konva.Rect({

x:stage.getWidth()/2,

y:stage.getHeight()/2,

width:200,

height:200,

stroke:"#000",

strokeWidth:5,

fill:"yellow",

offset:{

x:100,

y:100

}

});

layer.add(rect);

layer.draw();

rect.on("click",function(ev){

rect.cornerRadius(rect.cornerRadius()+5);

rect.scale({

x:1.5,

y:1.5

})

layer.draw();

})

4、繪制

創建一個矩形: Konva.Rect(option);

//Konva使用的基本案例

//第一步:創建舞台

var stage = new Konva.Stage({

container: 'container', //需要存放舞台的Dom容器

width: window.innerWidth, //設置全屏

height: window.innerHeight

});

//第二步:創建層

var layer = new Konva.Layer(); //創建一個層

stage.add(layer); //把層添加到舞台

//第三步: 創建矩形

var rect = new Konva.Rect({ //創建一個矩形

x: 100, //矩形的x坐標,相對其父容器的坐標

y: 100,

width: 100, //矩形的寬度

height: 100, //矩形高度

fill: 'gold', //矩形填充的顏色

stroke: 'navy', //矩形描邊的顏色

strokeWidth: 4, //填充寬度

opactity: .2, //矩形的透明度

scale: 1.2, //矩形的縮放 1:原來大小

rotation: 30, //旋轉的角度,是deg不是弧度。

cornerRadius: 10, //圓角的大小(像素)

id: 'rect1', //id屬性,類似dom的id屬性

name: 'rect',

draggable: true //是否可以進行拖拽

});

//創建一個組

var group = new Konva.Group({

x: 40,

y: 40,

});

group.add( rect ); //把矩形添加到組中

//第四步: 把形狀放到層中

layer.add( group ); //把組添加到層中

layer.draw(); //繪制層到舞台上

5、動畫

01、Konva.Tween

//創建舞台

var stage=new Konva.Stage({

container:"#box",

width:window.innerWidth,

height:window.innerHeight

});

var layer=new Konva.Layer({

});

stage.add(layer);

//繪制五星

var star=new Konva.Star({

x:stage.getWidth()/2,

y:stage.getHeight()/2,

innerRadius:100,

outerRadius:200,

fill:"orange",

stroke:"red",

strokeWidth:6,

numPoints:6

});

layer.add(star);

layer.draw();

var tween=new Konva.Tween({

node:star,

duration:2,

rotation:360,

easing:Konva.Easings.Linear,

// yoyo:true

onFinish:function(){

tween.reset();

tween.play();

}

});

tween.play();

star.on("mouseenter",function(){

tween.pause();

}).on("mouseleave",function(){

tween.play();

})

1、tween的控制方法

tween.play(), //播放動畫

tween.pause(), //暫停動畫

tween.reverse(), //動畫逆播放

tween.reset(), //重置動畫

tween.finish(), //立即結束動畫

seek:英文:尋找 英 [siːk] 美 [sik]

2、tween的緩動控制選項

Konva.Easings.Linear //線性

Konva.Easings.EaseIn //緩動,先慢后快

Konva.Easings.EaseOut //先快后慢

Konva.Easings.EaseInOut //兩頭慢,中間快

Konva.Easings.BackEaseIn //往回來一點,然后往前沖,汽車啟動類似...

Konva.Easings.BackEaseOut

Konva.Easings.BackEaseInOut

Konva.Easings.ElasticEaseIn //橡皮筋 英 [ɪ'læstɪk] 美 [ɪ'læstɪk]

Konva.Easings.ElasticEaseOut

Konva.Easings.ElasticEaseInOut

Konva.Easings.BounceEaseIn //彈跳;彈起,反跳;彈回 英 [baʊns] 美 [baʊns]

Konva.Easings.BounceEaseOut

Konva.Easings.BounceEaseInOut

Konva.Easings.StrongEaseIn //強力

Konva.Easings.StrongEaseOut

Konva.Easings.StrongEaseInOut

02、Konva.to

to就是對tween的封裝,比較簡單好用heart.to({

scaleX:.5,

scaleY:.5,

duration:2,

yoyo:true

});


http://lihuaxi.xjx100.cn/news/273438.html

相关文章

关于百度编辑器UEditor在asp.net中的使用方法!

为了完成自己想要的功能效果,在项目中使用到了百度编辑器,为了搞明白,苦心学习查资料搞了整整一天,总结一下。 在asp.net 的项目中目前我觉得有两种情况,一种是没有使用模板页的,一种是使用了模板页的&…

GPT-2仅是“反刍”知识,真正理解语言还要改弦更张

作者 | Gary Marcus译者 | 泓技编辑 | 夕颜出品 | AI科技大本营(ID:rgznai100)【导读】OpenAI的GPT-2正被广泛地讨论,无论是《纽约客》还是《经济学人》,我们都能看到有关它的话题。关于自然和人工智能,它想…

thinkphp5项目--企业单车网站(七)

thinkphp5项目--企业单车网站&#xff08;七&#xff09; 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps://github.com/fry404006308/BicycleEnterpriseWebsite 一、css样式&#xff1a;float和margin-right <div class"radio &qu…

标星 7.2w+!GitHub 上这个教人从零开始造轮子的项目又强势登上热榜!

点击上方“方志朋”&#xff0c;选择“设为星标”回复”666“获取新整理的面试文章(只要是)我不能创造的&#xff0c;我就(还)没有理解 - Feynman作者 | Rocky0429来源 | Python空间大家好&#xff0c;我是 Rocky0429&#xff0c;一个在划水界鼎鼎有名的蒟蒻...我在之前介绍过…

有效地使用计算机操作系统的教学设计与反思,《操作系统的基础知识(1)》教学设计及反思...

教学目标一、学习者分析学生通过第一章的学习&#xff0c;对计算机的软、硬件知识有了初步的了解&#xff0c;同时对操作系统的作用也有了简单的认识。但由于学生普遍对计算机理论部分的知识不够重视&#xff0c;所以大部分学生对本节内容了解得不多。二、教材内容分析1、本节的…

Google Voice开始发送邀请函

今天收到了Google Voice的邀请函&#xff0c;标题为“Youve been invited to Google Voice”。最近关于Google Voice 的新闻不少&#xff0c;出于好奇登录http://www.google.com/voice 递交了申请&#xff0c;没有想到这么快得到了邀请函。邮件特别强调“ Please note that Goo…

关于黑客

白日喧嚣、繁华的都市像个玩累了的孩子般慢慢地安静了下来。夜&#xff0c;寂静得令人窒息&#xff0c; 仿佛可以听到一串串数据划过网线的声音。都市的角落里&#xff0c;显示屏微弱的光亮笼罩着 一个不大的房间&#xff0c;黑暗中&#xff0c;不时地闪耀出深蓝色的光芒。一个…

目前学什么专业的人在搞SLAM?各有什么优势?

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达原提问&#xff1a;目前学什么专业的人在搞SLAM&#xff1f;如需要哪些专业知识&#xff0c;或者找什么专业的人合作&#xff1f;李雅不诺夫一些比较牛掰的论文后面都有作…