svnno****@sourc*****
svnno****@sourc*****
2010年 11月 7日 (日) 21:30:32 JST
Revision: 2133
http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2133
Author: dhrname
Date: 2010-11-07 21:30:31 +0900 (Sun, 07 Nov 2010)
Log Message:
-----------
SMILAnimationについて、Motion関連の修正をした。
Modified Paths:
--------------
branches/06x/063/org/w3c/dom/svg.js
Modified: branches/06x/063/org/w3c/dom/svg.js
===================================================================
--- branches/06x/063/org/w3c/dom/svg.js 2010-11-06 14:36:10 UTC (rev 2132)
+++ branches/06x/063/org/w3c/dom/svg.js 2010-11-07 12:30:31 UTC (rev 2133)
@@ -4539,7 +4539,7 @@
tar._values = [null, tar._to];
} else if (tar._by) {
tar._values = ["0", tar._by];
- } else {
+ } else if (!tar.hasChildNodes() && !tar.hasAttributeNS(null, "path")) { //SVGAnimateMotionElementに留意
/*アニメーションの効果が出ないように調整する
*SMILアニメーションの仕様を参照
*
@@ -4843,17 +4843,22 @@
tar._frame = function() {
var _tar = tar, tpn = _tar._path;
if (!!tpn) {
- var st = (tpn.getTotalLength() / _tar.getSimpleDuration()) * _tar.getCurrentTime() / 125 * 0.8;
+ var tgsd = _tar.getSimpleDuration();
+ if (tgsd === 0) {
+ tgsd = null;
+ return;
+ }
+ var st = (tpn.getTotalLength() / tgsd) * _tar.getCurrentTime() / 125 * 0.8;
var p = tpn.getPointAtLength(st), trans = _tar.targetElement.transform;
p = p.matrixTransform(_tar.targetElement.getScreenCTM())
- trans.animVal.getItem(trans.numberOfItmes-1).setTranslate(p.x, p.y);
+ trans.animVal.getItem(trans.animVal.numberOfItems-1).setTranslate(p.x, p.y);
var base = trans.baseVal;
trans.baseVal = trans.animVal;
var evtt = _tar.ownerDocument.createEvent("MutationEvents");
evtt.initMutationEvent("DOMNodeInsertedIntoDocument", false, false, null, null, null, null, null);
_tar.targetElement.dispatchEvent(evtt);
trans.baseVal = base;
- evtt = base = trans = null;
+ evtt = base = trans = st = tgsd = p = null;
}
}
evt = trans = null;
@@ -4897,7 +4902,12 @@
}
tar._frame = function() {
var _tar = tar, to = new SVGColor(), from = new SVGColor();
- var n = _tar._values.length - 1, t = _tar.getCurrentTime(), d = _tar.getSimpleDuration(), i = Math.floor((t*n) / d);
+ var d = _tar.getSimpleDuration();
+ if (d === 0) {
+ d = null;
+ return;
+ }
+ var n = _tar._values.length - 1, t = _tar.getCurrentTime(), i = Math.floor((t*n) / d);
to.setRGBColor(_tar._values[i+1]);
from.setRGBColor(_tar._values[i]);
if (!!!_tar._keyTimes) {