私は、時間の経過と共にオブジェクトをより速く、より速く回転させようとしています。アニメーションが繰り返されるたびにイベントを発生させることに問題があります。 SVG/SMILのが必要なようですが、次のコードでは、onSpinEnd()はまったく呼び出されていないようです。私は間違って何をしていますか?結局のところend-of-repeat-loopでのSVG animateTransformの変更
<path id='coloredPart' d='…'>
<animateTransform
id='spin'
attributeName='transform'
begin='0s'
dur='5s'
type='rotate'
from='0 0 0'
to='-360 0 0'
repeatCount='indefinite'
/>
</path>
<script> <![CDATA[
var spin = document.getElementById('spin');
var onSpinEnd = function() {
var intPart = 0;
intPart = parseInt(spin.getAttribute('dur')[0].slice(0, -1));
console.log(intPart);
if (intPart > 1) --intPart;
spin.setAttribute('dur', intPart.toString() + 's');
};
spin.addEventListener('repeatEvent', onSpinEnd, false)
]]>
</script>
、[0].slice(0, -1))
は "16S" から私 "16" を与えることはありません。 .slice(0, -1))
となります。その行は次のように表示されます。
intPart = parseInt(spin.getAttribute('dur').slice(0, -1));
明らかにrepeatEventは発砲していませんが、なぜその理由がわかりません。とにかく、あなたの 'slice'が間違っていることを指摘しなければなりません、負のインデックスを使うことはできません。 – bennedich
実際には、[あなたは負のインデックス付けを使うことができます](https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Array/slice)。 – adiabatic