* setSmilEventメソッドを見よ*/\r
_repeatList: [],\r
\r
+ /*リピート回数を示すプロパティ\r
+ * setSmilEventメソッドを見よ*/\r
+ _repeatCount: 0,\r
+ \r
/*SMILイベント関連を発火させるためのメソッド\r
* もっぱら、push メソッドで使われる*/\r
setSmilEvent: function($list) {\r
- var detail = 0;\r
$list.addEvent("begin", function($list) {\r
- var target = this._ele;\r
+ var target = this._ele,\r
+ detail = 0;\r
/*IE11のために、MouseEventsでSMILEventsの代用をする*/\r
var evt = target.ownerDocument.createEvent("MouseEvents");\r
evt.initMouseEvent("beginEvent" ,true, true, window, detail, 0, 0, 0, 0, false, false, false, false, 0, target);\r
target.dispatchEvent(evt);\r
/*repeatイベントのために、_repeatListプロパティを初期化する*/\r
var list = this._repeatList = [],\r
+ begin = $list.begin,\r
+ end = $list.end,\r
simpleDuration = this.timeline.simpleDuration;\r
- }.bind(this) );\r
+ if (simpleDuration && (simpleDuration !== end - begin)) {\r
+ /*活動継続時間と単純持続時間が異なるとき、repeatイベントを設定*/\r
+ for (var m= begin + simpleDuration, n=1;m < end; m+=simpleDuration) {\r
+ list.push( {\r
+ frame: m,\r
+ /*リピートの回数 (n >= 1)*/\r
+ count: n\r
+ } );\r
+ ++n;\r
+ }\r
+ $list.addEvent("play", function($list) {\r
+ var target = this._ele,\r
+ detail = 0,\r
+ frame = $list.currentFrame,\r
+ list = this._repeatList;\r
+ if (!list.length) {\r
+ return;\r
+ }\r
+ for (var i=0;i<list.length;++i) {\r
+ if ( (this._repaetCount >= i+1)\r
+ || (list[i].frame >= frame) ) {\r
+ this._repeatCount = detail;\r
+ break;\r
+ } \r
+ detail = list[i].count;\r
+ var evt = target.ownerDocument.createEvent("MouseEvents");\r
+ evt.initMouseEvent("repeatEvent" ,true, true, window, detail, 0, 0, 0, 0, false, false, false, false, 0, target);\r
+ target.dispatchEvent(evt);\r
+ }\r
+ }.bind(this) );\r
+ }\r
+ }.bind(this) );\r
+ \r
$list.addEvent("end", function() {\r
- var target = this._ele;\r
+ var target = this._ele,\r
+ detail = 0;\r
var evt = target.ownerDocument.createEvent("MouseEvents");\r
evt.initMouseEvent("endEvent" ,true, true, window, detail, 0, 0, 0, 0, false, false, false, false, 0, target);\r
target.dispatchEvent(evt);\r
- }.bind(this) );\r
+ }.bind(this) );\r
},\r
\r
/*引数で指定した要素 ele の属性を解析して、フレームに追加する*/\r