\r
/*$svgEventオブジェクトは、SVGEvent発火を監視するためのオブジェクト*/\r
base("$frame").up("$svgEvent").mix( {\r
+ /*イベントのスケジュール記録*/\r
log: [],\r
- setFrame: function(num) {\r
- for (var i=0;i<this.log.length;++i) {\r
- /*ログを検索して、過去にイベントを実行したものは除外する*/\r
- if (this.log[i].frame <= num) {\r
- return this.$frame.setFrame(num);\r
- }\r
+ \r
+ /*タイムラインの長さのキャッシュ*/\r
+ length: 0,\r
+ \r
+ setFrame: function (num) {\r
+ /*キャッシュのlengthプロパティを使って、再びログの計算をさせないようにする*/\r
+ if (this.length === this.timelines.length) {\r
+ return this.$frame.setFrame(num);\r
}\r
+ this.length = this.timelines.length;\r
for (var i=0;i<this.timelines.length;++i) {\r
var timeline = this.timelines[i];\r
- if (timeline.begin <= num) {\r
- /*beginEventを発動させる*/\r
- this.log.push( {\r
- frame: num,\r
- target: timeline.target\r
- } );\r
- }\r
+ this.log.push( {\r
+ frame: timeline.begin,\r
+ eventType: "begin",\r
+ target: timeline.target\r
+ },\r
+ {\r
+ frame: timeline.begin+timeline.activeTime,\r
+ eventType: "end",\r
+ target: timeline.target\r
+ });\r
}\r
return this.$frame.setFrame(num);\r
}\r
} );\r
/*境界条件を調べておく (limit value analysis)*/\r
it("should be this for the value (limit value analysis)", function() {\r
+ expect(frame.length).toBe(0);\r
expect(frame.log).toEqual([]);\r
frame.setFrame(0);\r
expect(frame.log).toEqual([]);\r
frame.setFrame(0);\r
expect(frame.log).toEqual([\r
{ frame: 0,\r
+ eventType: "begin",\r
+ target: ele\r
+ },\r
+ { frame: 0,\r
+ eventType: "end",\r
target: ele\r
}\r
]);\r
+ } );\r
+ /*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/\r
+ it("should be this for the value (the valid partion )", function() {\r
+ frame.length = 0;\r
+ frame.log = [];\r
+ base("$frame").addLine( base("$frame").$begin.up().mix({\r
+ timelines: [],\r
+ begin: 0,\r
+ activeTime: 0,\r
+ target: ele\r
+ }) );\r
frame.setFrame(0);\r
expect(frame.log).toEqual([\r
{ frame: 0,\r
+ eventType: "begin",\r
target: ele\r
- }\r
- ]);\r
- \r
- frame.setFrame(1);\r
- expect(frame.log).toEqual([\r
+ },\r
{ frame: 0,\r
+ eventType: "end",\r
target: ele\r
}\r
]);\r
frame.setFrame(1);\r
expect(frame.log).toEqual([\r
{ frame: 0,\r
+ eventType: "begin",\r
+ target: ele\r
+ },\r
+ { frame: 0,\r
+ eventType: "end",\r
target: ele\r
}\r
]);\r
} );\r
- /*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/\r
- it("should be this for the value (the valid partion )", function() {\r
- } );\r
} );\r
describe("Event", function() {\r
var $animate, ele, frame, p;\r