}, false);\r
evt = tar = void 0;\r
}, false);\r
-};\r
-(function(t) {\r
-/*以下のメソッド(beginElementなど)については、\r
- *別モジュールであるsmil::ElementTimeControl(smil.js)を参照のこと\r
- */\r
-/*void*/ t.beginElement = function() {\r
- var ttd = this.ownerDocument,\r
- evt = ttd.createEvent("TimeEvents");\r
- this._starting = ttd.documentElement.getCurrentTime(); //getStartTimeメソッドで使う開始時刻\r
- if (this._isStarted && ((this._restart === "never")\r
- || ((this._restart === "whenNotActive") && (this.getCurrentTime() > 0)))) {\r
- return; //restart属性の設定により、再起動させないようにする\r
- }\r
- if (this.getCurrentTime() > 0) {\r
- /*アニメーションの最中で、beginEventが起きるときは、endEventが前もって起こされる。SVG1.1の仕様を参照\r
- *\r
- * 19.4.2 Interface TimeEvent\r
- * Note that if an element is restarted while it is currently playing, the element will raise an end event and another begin event, as the element restarts.\r
- *\r
- * http://www.w3.org/TR/SVG/animate.html#InterfaceTimeEvent\r
- *\r
- */\r
- this.endElement();\r
- }\r
- evt.initTimeEvent("beginEvent", ttd.defaultView, 0);\r
- this.dispatchEvent(evt);\r
- /*新しくリストの頭を更新して、別の値も実行させるようにする*/\r
- this._start && this._start.shift();\r
- this._isStarted = true;\r
- ttd = evt = void 0;\r
-};\r
-/*void*/ t.endElement = function() {\r
- var ttd = this.ownerDocument,\r
- evt = ttd.createEvent("TimeEvents");\r
- evt.initTimeEvent("endEvent", ttd.defaultView, 0);\r
- this.dispatchEvent(evt);\r
- this._finish && this._finish.shift();\r
- this._currentFrame = 0;\r
-};\r
-/*void*/ t.beginElementAt = function(/*float*/ offset) {\r
- var ntc = this.ownerDocument.documentElement.getCurrentTime(),\r
- start = this._start || [];\r
- for (var i=0,sli=start.length;i<sli;++i) {\r
- if (start[i] === (offset+ntc)) {\r
- ntc = start = offset = void 0;\r
- return;\r
+ /*SVGAnimationElementのメソッドは初期化のときにつけることで高速化*/\r
+ this.mix(function(t) {\r
+ /*以下のメソッド(beginElementなど)については、\r
+ *別モジュールであるsmil::ElementTimeControl(smil.js)を参照のこと\r
+ */\r
+ /*void*/ t.beginElement = function() {\r
+ var ttd = this.ownerDocument,\r
+ evt = ttd.createEvent("TimeEvents");\r
+ this._starting = ttd.documentElement.getCurrentTime(); //getStartTimeメソッドで使う開始時刻\r
+ if (this._isStarted && ((this._restart === "never")\r
+ || ((this._restart === "whenNotActive") && (this.getCurrentTime() > 0)))) {\r
+ return; //restart属性の設定により、再起動させないようにする\r
+ }\r
+ if (this.getCurrentTime() > 0) {\r
+ /*アニメーションの最中で、beginEventが起きるときは、endEventが前もって起こされる。SVG1.1の仕様を参照\r
+ *\r
+ * 19.4.2 Interface TimeEvent\r
+ * Note that if an element is restarted while it is currently playing, the element will raise an end event and another begin event, as the element restarts.\r
+ *\r
+ * http://www.w3.org/TR/SVG/animate.html#InterfaceTimeEvent\r
+ *\r
+ */\r
+ this.endElement();\r
+ }\r
+ evt.initTimeEvent("beginEvent", ttd.defaultView, 0);\r
+ this.dispatchEvent(evt);\r
+ /*新しくリストの頭を更新して、別の値も実行させるようにする*/\r
+ this._start && this._start.shift();\r
+ this._isStarted = true;\r
+ ttd = evt = void 0;\r
+ };\r
+ /*void*/ t.endElement = function() {\r
+ var ttd = this.ownerDocument,\r
+ evt = ttd.createEvent("TimeEvents");\r
+ evt.initTimeEvent("endEvent", ttd.defaultView, 0);\r
+ this.dispatchEvent(evt);\r
+ this._finish && this._finish.shift();\r
+ this._currentFrame = 0;\r
+ };\r
+ /*void*/ t.beginElementAt = function(/*float*/ offset) {\r
+ var ntc = this.ownerDocument.documentElement.getCurrentTime(),\r
+ start = this._start || [];\r
+ for (var i=0,sli=start.length;i<sli;++i) {\r
+ if (start[i] === (offset+ntc)) {\r
+ ntc = start = offset = void 0;\r
+ return;\r
+ }\r
}\r
- }\r
- start.push(offset + ntc);\r
- start.sort(function(a, b) {\r
- return a - b;\r
- });\r
- this._start = start;\r
- ntc = start = offset = void 0;\r
-};\r
-/*void*/ t.endElementAt = function(/*float*/ offset) {\r
- var ntc = this.ownerDocument.documentElement.getCurrentTime(),\r
- fin = this._finish || [];\r
- for (var i=0,fli=fin.length;i<fli;++i) {\r
- if (fin[i] === (offset+ntc)) {\r
- ntc = fin = offset = void 0;\r
- return;\r
+ start.push(offset + ntc);\r
+ start.sort(function(a, b) {\r
+ return a - b;\r
+ });\r
+ this._start = start;\r
+ ntc = start = offset = void 0;\r
+ };\r
+ /*void*/ t.endElementAt = function(/*float*/ offset) {\r
+ var ntc = this.ownerDocument.documentElement.getCurrentTime(),\r
+ fin = this._finish || [];\r
+ for (var i=0,fli=fin.length;i<fli;++i) {\r
+ if (fin[i] === (offset+ntc)) {\r
+ ntc = fin = offset = void 0;\r
+ return;\r
+ }\r
}\r
- }\r
- fin.push(offset + ntc);\r
- fin.sort(function(a, b) {\r
- return a - b;\r
- });\r
- this._finish = fin;\r
- ntc = start = offset = void 0;\r
-};\r
-t._eventRegExp = /(mouse|activ|clic|begi|en)[a-z]+/;\r
-t._timeRegExp = /[\-\d\.]+(h|min|s|ms)?$/;\r
-t._unit = {\r
- "h" : 3600000,\r
- "min" : 60000,\r
- "s" : 1000\r
-};\r
-/*_getOffsetメソッド\r
- * どれだけズレの時間があるかを計測するメソッド\r
- *tに数値が使われていないときは0を返す\r
- *これはSMILアニメーションモジュールの以下の記述にあるように、値のデフォルトが0であることに起因する\r
- *http://www.w3.org/TR/2001/REC-smil20-20010807/smil-timing.html#Timing-Ex:0DurDiscreteMedia\r
- *http://www.w3.org/TR/2001/REC-smil20-20010807/smil-timing.html#Timing-DurValueSemantics\r
- ** Note that when the simple duration is "indefinite", some simple use cases can yield surprising results. See the related example #4 in Appendix B.\r
- */\r
-t._getOffset = function(/*string*/ val) {\r
- var t = null, //tは最初の数値\r
- n = [val.indexOf("+"), val.indexOf("-")],\r
- s;\r
- if (n[0] > -1) {\r
- s = val.slice(n[0]);\r
- t = parseFloat(s);\r
- } else if (n[1] > -1) {\r
- s = val.slice(n[1]);\r
- t = parseFloat(s);\r
- } else {\r
- s = val;\r
- t = parseFloat(val);\r
- }\r
- if (isFinite(t)) {\r
- if (/\d+\:(\d\d)\:([\d\.]+)$/.test(s)) { //Full-Clock-Valueの場合\r
- t = (t*3600 + parseInt(RegExp.$1, 10)*60 + parseFloat(RegExp.$2)) * 1000;\r
- } else if (/\d\d\:([\d\.]+)$/.test(s)) {\r
- t = (t*60 + parseFloat(RegExp.$1)) * 1000;\r
- } else if (/(h|min|s)$/.test(s)) {\r
- t *= this._unit[RegExp.$1];\r
+ fin.push(offset + ntc);\r
+ fin.sort(function(a, b) {\r
+ return a - b;\r
+ });\r
+ this._finish = fin;\r
+ ntc = start = offset = void 0;\r
+ };\r
+ t._eventRegExp = /(mouse|activ|clic|begi|en)[a-z]+/;\r
+ t._timeRegExp = /[\-\d\.]+(h|min|s|ms)?$/;\r
+ t._unit = {\r
+ "h" : 3600000,\r
+ "min" : 60000,\r
+ "s" : 1000\r
+ };\r
+ /*_getOffsetメソッド\r
+ * どれだけズレの時間があるかを計測するメソッド\r
+ *tに数値が使われていないときは0を返す\r
+ *これはSMILアニメーションモジュールの以下の記述にあるように、値のデフォルトが0であることに起因する\r
+ *http://www.w3.org/TR/2001/REC-smil20-20010807/smil-timing.html#Timing-Ex:0DurDiscreteMedia\r
+ *http://www.w3.org/TR/2001/REC-smil20-20010807/smil-timing.html#Timing-DurValueSemantics\r
+ ** Note that when the simple duration is "indefinite", some simple use cases can yield surprising results. See the related example #4 in Appendix B.\r
+ */\r
+ t._getOffset = function(/*string*/ val) {\r
+ var t = null, //tは最初の数値\r
+ n = [val.indexOf("+"), val.indexOf("-")],\r
+ s;\r
+ if (n[0] > -1) {\r
+ s = val.slice(n[0]);\r
+ t = parseFloat(s);\r
+ } else if (n[1] > -1) {\r
+ s = val.slice(n[1]);\r
+ t = parseFloat(s);\r
+ } else {\r
+ s = val;\r
+ t = parseFloat(val);\r
}\r
if (isFinite(t)) {\r
- t *= 0.8;\r
- return t;\r
+ if (/\d+\:(\d\d)\:([\d\.]+)$/.test(s)) { //Full-Clock-Valueの場合\r
+ t = (t*3600 + parseInt(RegExp.$1, 10)*60 + parseFloat(RegExp.$2)) * 1000;\r
+ } else if (/\d\d\:([\d\.]+)$/.test(s)) {\r
+ t = (t*60 + parseFloat(RegExp.$1)) * 1000;\r
+ } else if (/(h|min|s)$/.test(s)) {\r
+ t *= this._unit[RegExp.$1];\r
+ }\r
+ if (isFinite(t)) {\r
+ t *= 0.8;\r
+ return t;\r
+ }\r
}\r
- }\r
- return 0;\r
-};\r
-\r
-/*float*/ t.getStartTime = function(){\r
- if (this._starting || (this._starting === 0)) {\r
- return (this._starting);\r
- } else {\r
- throw new DOMException(/*DOMException.INVALID_STATE_ERR*/ 11);\r
- }\r
-};\r
-/*getCurrentTimeメソッド\r
- *現在の時間コンテナ内での時刻であり、\r
- *決して現在時刻ではない。要素のbeginイベントの発火したときが0sである。\r
- */\r
-/*float*/ t.getCurrentTime = function(){\r
- return (this._currentFrame * 125 * 0.8);\r
-};\r
-/*float*/ t.getSimpleDuration = function(){\r
- if (!this._dur && !this._finish && (this._dur === "indefinite")) {\r
- throw new DOMException(/*DOMException.NOT_SUPPORTED_ERR*/ 9);\r
- } else {\r
- return (this._getOffset(this._dur));\r
- }\r
+ return 0;\r
+ };\r
+ \r
+ /*float*/ t.getStartTime = function(){\r
+ if (this._starting || (this._starting === 0)) {\r
+ return (this._starting);\r
+ } else {\r
+ throw new DOMException(/*DOMException.INVALID_STATE_ERR*/ 11);\r
+ }\r
+ };\r
+ /*getCurrentTimeメソッド\r
+ *現在の時間コンテナ内での時刻であり、\r
+ *決して現在時刻ではない。要素のbeginイベントの発火したときが0sである。\r
+ */\r
+ /*float*/ t.getCurrentTime = function(){\r
+ return (this._currentFrame * 125 * 0.8);\r
+ };\r
+ /*float*/ t.getSimpleDuration = function(){\r
+ if (!this._dur && !this._finish && (this._dur === "indefinite")) {\r
+ throw new DOMException(/*DOMException.NOT_SUPPORTED_ERR*/ 9);\r
+ } else {\r
+ return (this._getOffset(this._dur));\r
+ }\r
+ };\r
+ });\r
};\r
-})(SVGAnimationElement.prototype);\r
//raises( DOMException );\r
NAIBU.Time = {\r
currentFrame : 0,\r