<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title></title> <style type="text/css"> html, body, canvas { padding: 0; margin: 0; width: 100%; height: 100%; overflow-y: hidden; background-color: transparent; } </style> </head> <body> <canvas id="lime-painter"></canvas> <script type="text/javascript" src="./uni.webview.1.5.3.js"></script> <script type="text/javascript" src="./painter.js"></script> <script> var cache = []; var painter = null; var canvas = null; var context = null; var timer = null; var pixelRatio = 1; console.log = function (...args) { postMessage(args); }; // function stringify(key, value) { // if (typeof value === 'object' && value !== null) { // if (cache.indexOf(value) !== -1) { // return; // } // cache.push(value); // } // return value; // }; function emit(event, data) { postMessage({ event, data: (typeof data !== 'object' && data !== null ? data : JSON.stringify(data)) }); cache = []; }; function postMessage(data) { uni.postMessage({ data }); }; function init(dpr) { canvas = document.querySelector('#lime-painter'); context = canvas.getContext('2d'); pixelRatio = dpr || window.devicePixelRatio; painter = new Painter({ id: 'lime-painter', context, canvas, pixelRatio, width: canvas.offsetWidth, height: canvas.offsetHeight, listen: { onProgress(v) { emit('progressChange', v); }, onEffectFail(err) { //console.error(err) emit('fail', err); } } }); emit('inited', true); }; function save(args) { delete args.success; delete args.fail; clearTimeout(timer); timer = setTimeout(() => { const path = painter.save(args); if (typeof path == 'string') { const index = Math.ceil(path.length / 8); for (var i = 0; i < 8; i++) { if (i == 7) { emit('success', path.substr(i * index, index)); } else { emit('file', path.substr(i * index, index)); } }; } else { // console.log('canvas no data') emit('fail', 'canvas no data'); }; }, 30); }; async function source(args) { let size = await painter.source(args); emit('layoutChange', size); if(!canvas.height) { console.log('canvas no size') emit('fail', 'canvas no size'); } painter.render().catch(err => { // console.error(err) emit('fail', err); }); }; </script> </body> </html>