From: dhrname Date: Mon, 31 Oct 2016 13:53:56 +0000 (+0900) Subject: Modify the push method to support SVG API as the beginElement method X-Git-Url: http://git.osdn.net/view?p=sie%2Fsie.git;a=commitdiff_plain;h=5d0d4b80b5d07b5546abc0206fa9176c14a3a134 Modify the push method to support SVG API as the beginElement method --- diff --git a/org/w3c/dom/smil.js b/org/w3c/dom/smil.js index 276a309..48a0d23 100644 --- a/org/w3c/dom/smil.js +++ b/org/w3c/dom/smil.js @@ -413,8 +413,6 @@ base("$frame").mix ( { objList.value = this.begin = eventOffset + base("$frame").currentFrame; endList.value = this.begin + this.activeTime; this.isResolved = true; - console.log(base("$frame").currentFrame, this.$list); - }; this.eventOffset = eventOffset; if (this.repeat > 0) { @@ -1115,16 +1113,36 @@ base("$calcMode").up("$attribute").mix( { $frame.addLine(frame.$list.init()); /*beginElementメソッドを追加*/ function eleMethod (obj, eventName) { - return (obj.string !== "indefinite") ? function(){} + /*objListのvalueプロパティはあとで書き換えられる(イベントの場合のみ)*/ + + return + }; + + /*beginElementメソッドを追加*/ + var objList = frame.$list.addList(Number.MAX_VALUE), + /*endListのvalueプロパティには、活動継続フレーム数と開始フレーム数を足したものが入る*/ + endList = frame.$list.addEndList(Number.MAX_VALUE); + ele.beginElement = (frame.string !== "indefinite") ? function(){} : function() { + objList.value = frame.begin = base("$frame").currentFrame; + endList.value = frame.begin + frame.activeTime; + frame.isResolved = true; var evt = this.ownerDocument.createEvent("MouseEvents"); - evt.initMouseEvent(eventName + "Event" ,true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, this); + evt.initMouseEvent("beginEvent" ,true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, this); this.dispatchEvent(evt); }; - }; - ele.beginElement = eleMethod(frame, "begin"); /*endElementメソッドを追加*/ - ele.endElement = eleMethod(frame.$activate.end || {}, "end"); + var endFrame = frame.$activate.end || {}; + ele.endElement = (endFrame.string !== "indefinite") ? function(){} + : function() { + if (frame.isResolved) { + endList.value = frame.begin + frame.activeTime; + endFrame.isResolved = true; + var evt = this.ownerDocument.createEvent("MouseEvents"); + evt.initMouseEvent("endEvent" ,true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, this); + this.dispatchEvent(evt); + } + }; /*setFrameメソッドを使ったときの、再帰スタックの使いすぎを防ぐため*/ frame.timelines = []; begin = ele = void 0;