return s;\r
},\r
\r
+ /*isKeyErrorメソッド\r
+ * 後述のsetKeyメソッドで使われる。keyTimes属性のエラーをチェックするメソッド\r
+ * 属性値にエラーがあれば、trueを返し、なければ、falseを返す*/\r
+ isKeyError: function(/*number*/ keyLength, /*number*/toLength) {\r
+ if (keyLength && (keyLength !== (toLength+1)) ) {\r
+ return true;\r
+ } else {\r
+ return false;\r
+ }\r
+ },\r
+ \r
/*setKeyメソッド\r
* 引数の要素のkeyTimes属性やkeySplines属性を処理するためのメソッド\r
* 必要な他の属性処理はsetValuesメソッドに任せている*/\r
return null;\r
}\r
/*toオブジェクトはtoとfromで一組となっているのでlengthが加算される*/\r
- if (keys.length && (keys.length !== (to.length+1))) {\r
+ if (this.isKeyError(keys.length, to.length)) {\r
/*keyTimes属性とvalues属性のリストの個数が合致しない場合、アニメーションの効果がない\r
* 仕様を参照 SMIL Animation 3.2.3. Animation function calculation modes\r
* http://www.w3.org/TR/smil-animation/#AnimFuncCalcMode*/\r
+ \r
+ /*ただし、animateMotion要素においては、keyPoints属性が\r
+ * values属性のリストよりも優先されるため、\r
+ * keyPoints属性があるときは、アニメーションの効果がある\r
+ * \r
+ * >Regarding determining the points which correspond to the ‘keyTimes’ attributes, the ‘keyPoints’ attribute overrides ‘path’, which overrides ‘values’\r
+ * \r
+ * http://www.w3.org/TR/SVG11/animate.html#AnimateMotionElement\r
+ */\r
return null;\r
}\r
for (var i=0;i<to.length;++i) {\r
if (keys.length && (keys[0] !== 0)) {\r
return null;\r
}\r
- if (keys.length && (keys.length !== (to.length+1))) {\r
+ if (this.isKeyError(keys.length, to.length)) {\r
return null;\r
}\r
for (var i=0;i<to.length;++i) {\r
expect(attr.setValues(null, null, null, null)).toBeNull();\r
} );\r
} );\r
- describe("A setKey method", function() {\r
+ describe("A setKey method and a isKeyError method", function() {\r
var attr, s;\r
beforeEach( function() {\r
attr = base("$calcMode").$attribute.up("width");\r
/*境界条件を調べておく (limit value analysis)*/\r
it("should be this for the value (limit value analysis)", function() {\r
expect(attr.setKey(s)).toBeNull();\r
+ expect(attr.isKeyError()).toBeFalsy();\r
+ expect(attr.isKeyError(0, 0)).toBeFalsy();\r
+ expect(attr.isKeyError(1, 0)).toBeFalsy();\r
+ expect(attr.isKeyError(1, 1)).toBeTruthy();\r
\r
s.setAttributeNS(null, "from", "0");\r
attr.setKey(s);\r