html5 strongeaseinout,Canvas開發庫封裝

一、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

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值