0
<g id="clouds" >
<ellipse x="0" y="0" cx="100" cy="100" rx="30" ry="20" fill="white"/>
<ellipse x="0" y="0" cx="120" cy="80" rx="30" ry="20" fill="white"/>
<ellipse x="0" y="0" cx="130" cy="110" rx="30" ry="20" fill="white"/>
<ellipse x="0" y="0" cx="160" cy="100" rx="30" ry="20" fill="white"/>
<animateTransform attributeName="transform"
attributeType="XML"
type="translate"
from="0,0"
to="6000,0"
dur="30s"
repeatCount="indefinite"/>
</g>
そして、以下では、JavaScriptです:
私はそれを呼んでいる方法var svg = document.getElementsByTagName('svg')[0];
var xlinkns = "http://www.w3.org/1999/xlink";
function loadClouds(){
setInterval(function(){
var y = (Math.random()*1000)+200;
var use = document.createElementNS("http://www.w3.org/2000/svg", 'use');
use.setAttributeNS(xlinkns, "href", "#clouds");
use.setAttribute("transform", "scale(0.2,0.2)");
use.setAttribute("x", 0);
use.setAttribute("y", y);
svg.appendChild(use);
}, 1000);
}
:
//Clouds
<script type="text/javascript"><![CDATA[
loadClouds();
]]></script>
毎回Aクラウドが作成されたときは、0から始まるのではなく、以前に作成したクラウドのxを開始点として使用しています。
暗闇の中でちょうど一発ですが、svgではxとyの大文字と小文字は区別されませんか? xの代わりにXを設定してみてください。 – Zenoo
g要素は現在の変換状況に相対的に配置されています。 –