1

SVG のレンダリングについて、HTML5 キャンバスに 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://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 を使用することを提案しますが、私が理解している限り、それはパス アニメーションをサポートしていないため、私の例では機能しません。

4

1 に答える 1

0

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;
}

delayInMillisecondsと置き換えgetTimeTo(targetDate)ます。実験については、このフィドルを参照してください。

于 2015-07-18T19:41:04.183 に答える