UNPKG

ycc.js

Version:

Mini and powerful canvas engine for creating App or Game.

132 lines (103 loc) 2.88 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name=viewport content="width=device-width,initial-scale=1,user-scalable=0,viewport-fit=cover"> <title>框题操作</title> <link rel="stylesheet" href="../style.css"> </head> <body> <div class="return-btn"> <a href="../"> 返回首页 </a> </div> <div class="tip"> <h3>示例说明:</h3> <div> 1、这个示例展示框选操作,实质是一个框选的UI。<br> 2、每次点击框选按钮后,PC端可以在绘图区拖动鼠标框选,移动端可以拖拽框选。<br> 3、框选结束后,可以拖动红色区域改变选区位置,也可以拖动边角更改选框大小。<br> 4、选区下方可以添加按钮,这里的代码被注释了。<br> </div> <br><br> </div> <button onclick="rect()">框选</button> <br> </body> </html> <script src="../common.js"></script> <script src="../../build/ycc.js"></script> <script> var ycc = new Ycc(); var maxWidth = 300; var scale = 1; ycc.loader.loadResParallel([{name:"paper",url:"./paper.gif"}],onLoad); function onLoad(arr,res) { var canvas = document.createElement("canvas"); scale = maxWidth/res.paper.width; canvas.width = maxWidth; canvas.height = res.paper.height*scale; document.body.appendChild(canvas); ycc.bindCanvas(canvas); var _layer = ycc.layerManager.newLayer(); _layer.addUI(new Ycc.UI.Image({ res:res.paper, rect:new Ycc.Math.Rect(0,0,canvas.width,canvas.height), fillMode:"scale" })); ycc.layerManager.reRenderAllLayerToStage(); } /** * 画方框 */ function rect() { var cropRect,startX=0,startY=0; // 禁止其他图层的事件 ycc.layerManager.enableEventManagerAll(false) // 新建框图的图层 .newLayer({ enableEventManager:true, ondragstart:function (e) { startX=e.x; startY=e.y; cropRect = new Ycc.UI.CropRect({ name:''+Date.now(), ctrlSize:10, fill:false, strokeStyle:"red", fillStyle:"red", lineWidth:10, rectBgColor:"rgba(255, 1, 1, 1);", rectBgAlpha:0.2 }); this.addUI(cropRect); cropRect.setCtrlBtns([ { content:"保存", ontap:function () { console.log(this); } }, {content:"增宽",ontap:function (e) { console.log(this); }}, {content:"变窄"}, {content:"删除"} ]); }, ondragging:function (e) { var startDot = new Ycc.Math.Dot(startX,startY); var endDot = new Ycc.Math.Dot(e.x,e.y); cropRect.rect = new Ycc.Math.Rect(startDot.x,startDot.y,endDot.x-startDot.x,endDot.y-startDot.y); this.yccInstance.layerManager.reRenderAllLayerToStage(); }, ondragend:function (e) { // 恢复所有图层的事件监听 this.yccInstance.layerManager.enableEventManagerAll(true); this.ondragging = null; this.ondragstart = null; } }); } </script>