From 6a1ec5db4ce698867983a30c458e8386fd4b52a3 Mon Sep 17 00:00:00 2001 From: Eric Rowell Date: Thu, 4 Apr 2013 22:45:39 -0700 Subject: [PATCH] fixed #363 --- src/shapes/Line.js | 19 +++++++++-------- tests/js/unit/shapes/lineTests.js | 35 +++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 9 deletions(-) diff --git a/src/shapes/Line.js b/src/shapes/Line.js index 0720a47f..82f535d3 100644 --- a/src/shapes/Line.js +++ b/src/shapes/Line.js @@ -43,16 +43,17 @@ */ setPoints: function(val) { this.setAttr('points', Kinetic.Type._getPoints(val)); + }, + /** + * get points array + * @name getPoints + * @methodOf Kinetic.Line.prototype + */ + // NOTE: cannot use getter method because we need to return a new + // default array literal each time because arrays are modified by reference + getPoints: function() { + return this.attrs.points || []; } }; Kinetic.Global.extend(Kinetic.Line, Kinetic.Shape); - - // add getters setters - Kinetic.Node.addGetter(Kinetic.Line, 'points', []); - - /** - * get points array - * @name getPoints - * @methodOf Kinetic.Line.prototype - */ })(); diff --git a/tests/js/unit/shapes/lineTests.js b/tests/js/unit/shapes/lineTests.js index c769e802..b7072bf2 100644 --- a/tests/js/unit/shapes/lineTests.js +++ b/tests/js/unit/shapes/lineTests.js @@ -49,6 +49,41 @@ Test.Modules.LINE = { test(line.getShapeType() === 'Line', 'shape type should be Line'); }, + 'test default ponts array for two lines': function(containerId) { + var stage = new Kinetic.Stage({ + container: containerId, + width: 578, + height: 200 + }); + var layer = new Kinetic.Layer(); + + var line = new Kinetic.Line({ + stroke: 'blue', + strokeWidth: 20, + lineCap: 'round', + lineJoin: 'round', + draggable: true + }); + + var redLine = new Kinetic.Line({ + x: 50, + stroke: 'red', + strokeWidth: 20, + lineCap: 'round', + lineJoin: 'round', + draggable: true + }); + + line.setPoints([0,1,2,3]); + redLine.setPoints([4,5,6,7]); + + layer.add(line).add(redLine); + stage.add(layer); + + test(line.getPoints()[0].x === 0, 'line points is wrong'); + test(redLine.getPoints()[0].x === 4, 'redLine points is wrong'); + + }, 'add dashed line': function(containerId) { var stage = new Kinetic.Stage({ container: containerId,