Javascript 在特定时间在HTML5画布上绘制SVG文件
我找到了关于呈现SVG的主题。有没有办法在特定时刻绘制SVG动画文件?我是说,如何更改代码Javascript 在特定时间在HTML5画布上绘制SVG文件,javascript,animation,canvas,svg,canvg,Javascript,Animation,Canvas,Svg,Canvg,我找到了关于呈现SVG的主题。有没有办法在特定时刻绘制SVG动画文件?我是说,如何更改代码 var img = new Image(); img.onload = function() { ctx.drawImage(img, 0, 0); // define time at here: time="1.3sec" } img.src = "myfile.svg"; 使得img在特定时间包含svg? 文件myfile.svg包含以下内容: <svg xmlns="http:
var img = new Image();
img.onload = function() {
ctx.drawImage(img, 0, 0); // define time at here: time="1.3sec"
}
img.src = "myfile.svg";
使得img
在特定时间包含svg?
文件myfile.svg包含以下内容:
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 200 200"
id="svg2">
<g transform="translate(100, 100)">
<path transform="matrix(0.99982594,0.01865711,-0.01865711,0.99982594,0,0)" style="opacity:1;fill:#28b327;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" d="M 23.755845,-0.77020556 A 23.938168,23.938168 0 0 1 -0.1823229,23.167962 23.938168,23.938168 0 0 1 -24.12049,-0.77020556 23.938168,23.938168 0 0 1 -0.1823229,-24.708373 23.938168,23.938168 0 0 1 23.755845,-0.77020556 Z" id="ball-2-path4136">
<animate to="M 17.577751,-4.4423325 A 17.748762,27.248762 1.0690357 0 1 -0.67630452,22.470547 17.748762,27.248762 1.0690357 0 1 -17.913594,-5.1046137 17.748762,27.248762 1.0690357 0 1 0.3404618,-32.017493 17.748762,27.248762 1.0690357 0 1 17.577751,-4.4423325 Z" dur="0.2" begin="1.4" attributeName="d" fill="freeze"/></path>
</g>
</svg>
人们通常建议使用canvg,但据我所知,它不支持路径动画,因此我的示例不支持它。您只需使用
setTimeout
延迟正方形的插入,方式如下:
var delayInMilliseconds = 3000;
img.onload = function() {
setTimeout(function() {
// This will happend 3 seconds after page load
ctx.drawImage(img, 0, 0);
}, delayInMilliseconds);
}
img.src = "http://upload.wikimedia.org/wikipedia/commons/d/d2/Svg_example_square.svg";
如果希望能够指定事件的日期和时间,请使用自定义函数计算距离目标日期的剩余时间:
function getTimeTo(date) {
var time = date.getTime() - Date.now();
return time;
}
并用
getTimeTo(targetDate)
替换delayinmillides
。请参阅以进行实验。您只需使用setTimeout
延迟正方形的插入,方式如下:
var delayInMilliseconds = 3000;
img.onload = function() {
setTimeout(function() {
// This will happend 3 seconds after page load
ctx.drawImage(img, 0, 0);
}, delayInMilliseconds);
}
img.src = "http://upload.wikimedia.org/wikipedia/commons/d/d2/Svg_example_square.svg";
如果希望能够指定事件的日期和时间,请使用自定义函数计算距离目标日期的剩余时间:
function getTimeTo(date) {
var time = date.getTime() - Date.now();
return time;
}
并用
getTimeTo(targetDate)
替换delayinmillides
。请参阅以进行实验。无法回答此特定问题,但这些链接可能有用。在一段时间内设置元素属性从一个值到另一个值的动画:来自MDN的Canvas API文档:无法回答此特定问题,但这些链接可能有用。在一段时间内设置元素属性从一个值到另一个值的动画:来自MDN的Canvas API文档: