From 74e2a6a5a4a4cc800af543f9c8f75057abb32553 Mon Sep 17 00:00:00 2001 From: dhrname Date: Wed, 8 Feb 2017 21:07:57 +0900 Subject: [PATCH] Support an isKeyError method --- org/w3c/dom/smil.js | 24 ++++++++++++++++++++++-- tool/Spec/spec/SvgDomSpec.js | 6 +++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/org/w3c/dom/smil.js b/org/w3c/dom/smil.js index fd398ec..1da1374 100644 --- a/org/w3c/dom/smil.js +++ b/org/w3c/dom/smil.js @@ -1295,6 +1295,17 @@ base("$calcMode").up("$attribute").mix( { return s; }, + /*isKeyErrorメソッド + * 後述のsetKeyメソッドで使われる。keyTimes属性のエラーをチェックするメソッド + * 属性値にエラーがあれば、trueを返し、なければ、falseを返す*/ + isKeyError: function(/*number*/ keyLength, /*number*/toLength) { + if (keyLength && (keyLength !== (toLength+1)) ) { + return true; + } else { + return false; + } + }, + /*setKeyメソッド * 引数の要素のkeyTimes属性やkeySplines属性を処理するためのメソッド * 必要な他の属性処理はsetValuesメソッドに任せている*/ @@ -1319,10 +1330,19 @@ base("$calcMode").up("$attribute").mix( { return null; } /*toオブジェクトはtoとfromで一組となっているのでlengthが加算される*/ - if (keys.length && (keys.length !== (to.length+1))) { + if (this.isKeyError(keys.length, to.length)) { /*keyTimes属性とvalues属性のリストの個数が合致しない場合、アニメーションの効果がない * 仕様を参照 SMIL Animation 3.2.3. Animation function calculation modes * http://www.w3.org/TR/smil-animation/#AnimFuncCalcMode*/ + + /*ただし、animateMotion要素においては、keyPoints属性が + * values属性のリストよりも優先されるため、 + * keyPoints属性があるときは、アニメーションの効果がある + * + * >Regarding determining the points which correspond to the ‘keyTimes’ attributes, the ‘keyPoints’ attribute overrides ‘path’, which overrides ‘values’ + * + * http://www.w3.org/TR/SVG11/animate.html#AnimateMotionElement + */ return null; } for (var i=0;i