}\r
} ).mix( function($frame) {\r
$frame.up("$list").mix( {\r
- /*開始時刻リスト (後述のupdateStateメソッドで使う)*/\r
+ /*終了時刻(単位フレーム数)のキャッシュとして使う*/\r
+ end: 0,\r
+ \r
+ /*開始時刻(単位フレーム数)リスト (後述のupdateStateメソッドで使う)*/\r
beginList: { \r
next: null,\r
value: Number.MAX_VALUE\r
},\r
\r
- /*終了時刻リスト (後述のupdateStateメソッドで使う)*/\r
+ /*終了時刻(単位フレーム数)リスト (後述のupdateStateメソッドで使う)*/\r
endList: {\r
next: null,\r
value: Number.MAX_VALUE\r
if (endTime >= cacheBegin) {\r
/*終了時刻にもう到達したときは、直接BEGINNING状態からENDING状態へ移行*/\r
this.state = end;\r
+ /*現時点を終了時刻とみなす*/\r
+ this.end = f;\r
} else {\r
this.state = play;\r
}\r
if ( (endTime >= cacheBegin) || (startTime > cacheBegin) ) {\r
/*終了時刻に到達したか、再び開始イベントが発火されたとき*/\r
this.state = end;\r
+ /*現時点を終了時刻とみなす*/\r
+ this.end = f;\r
}\r
} else if (state === end) {\r
if (endTime >= cacheBegin) {\r
}\r
return s;\r
},\r
+ \r
+ /*repeatイベントの発火時刻リスト\r
+ * setSmilEventメソッドを見よ*/\r
+ _repeatList: [],\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
+ /*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
+ simpleDuration = this.timeline.simpleDuration;\r
+ }.bind(this) );\r
+ $list.addEvent("end", function() {\r
+ var target = this._ele;\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
+ },\r
\r
/*引数で指定した要素 ele の属性を解析して、フレームに追加する*/\r
push: function(/*Element Node*/ ele) {\r
};\r
/*setFrameメソッドを使ったときの、再帰スタックの使いすぎを防ぐため*/\r
frame.timelines = [];\r
+ this.setSmilEvent(frame.$list);\r
begin = ele = void 0;\r
return frame;\r
},\r
floor = Math.floor;\r
while(obj) {\r
var frame = obj.frame,\r
- target = obj.target\r
+ target = obj.target,\r
detail = 0;\r
if (frame <= num) {\r
/*IE11ではSVGEventsやDOMEventsを使うと問題が起きるため、MouseEventsで代用する*/\r