- From: Chris Lilley <chris@w3.org>
- Date: Tue, 25 Oct 2005 01:26:51 +0200
- To: www-svg@w3.org
Hello www-svg,
> In http://www.w3.org/TR/2005/WD-SVGMobile12-20050413/animate.html
> section 16.3 the example does not actually demonstrate how to animate
> SVG content using the SVG DOM, it rather demonstrates animation using
> the UDOM/uDOM/µDOM/Micro DOM/SVG DOM Subset/... *and* abuse of SMIL
> animation elements.
Its not 'abuse' - it runs an animation, which has no visual effect, but
captures the repeat events and uses those from script.
> Such abuse of language features is inappropriate
> for W3C specifications. Please change the draft such that it does not
> abuse such features and be consistent about how this animation is
> achieved.
However, we agree that using SMIL animation to illustrate
non-SMIL-animation is not as clear as it might be, and have rewritten
the example to not do this.
> This will likely require adding facilities such as SVGTimer
> to SVG Tiny 1.2 as otherwise such animation is hardly possible.
Here is the example as it stands now.
<?xml version="1.0" standalone="no"?>
<svg width="4cm" height="2cm" viewBox="0 0 400 200" id="root"
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny">
<desc>A simple animation using the uDOM and the SVGTimer interface of the uDOM.</desc>
<script type="application/ecmascript"><![CDATA[
var timeValue = 0;
var timerIncrement = 50;
var maxTime = 5000;
var textElement;
var svgRoot;
var mytimer;
function init() {
textElement = document.getElementById("svgtext");
svgRoot = document.getElementById("root");
launchTimer();
}
function launchTimer() {
mytimer = createTimer();
// Fire timer event as soon as possible
mytimer.delay = 0;
// Timer event must be sent every 50 ms
mytimer.interval = 50;
// This instruction is clear enough, isn't it ?
mytimer.start();
}
function showAndGrowElement() {
timeValue += timerIncrement;
// Scale the text string gradually until it is 20 times larger
scalefactor = (timeValue * 20.) / maxTime;
var matrix = createSVGMatrixComponents(scalefactor, 0, 0, scalefactor, 0, 0);
textElement.setMatrixTrait("transform", matrix);
// Make the string more opaque
var opacityFactor = timeValue / maxTime;
textElement.setFloatTrait("fill-opacity", opacityFactor);
if (timeValue >= maxTime)
mytimer.stop();
}
]]></script>
<handler type="application/ecmascript" ev:event="load">
init();
</handler>
<handler type="application/ecmascript" ev:event="timer">
if (evt.target == mytimer)
{
showAndGrowElement();
}
</handler>
<rect x="1" y="1" width="398" height="198" fill="none" stroke="blue" stroke-width="2"/>
<g transform="translate(50,150)" font-size="7" stroke="none">
<text fill="red" fill-opacity="0" id="svgtext">SVG</text>
</g>
</svg>
Please let us know within two weeks if this response does not resolve
your question.
--
Chris Lilley mailto:chris@w3.org
Chair, W3C SVG Working Group
W3C Graphics Activity Lead
Co-Chair, W3C Hypertext CG
Received on Monday, 24 October 2005 23:27:01 UTC