2012-12-06 32 views
1

这是我第一次发帖,我已经看过最好的我可以回答这个问题。我空手而出。kineticjs扩展形状类导致未捕获的距离误差?

以前我使用kineticJS的3.10.2。我已经更新了图书馆使用4.1.2这是今天最新的。我已经经历了几个我已经解决的错误,但是,我已经到了死胡同。

这是我在我的js文件中得到的错误。我不知道它在发生什么。

Uncaught RangeError: Maximum call stack size exceeded 
    Kinetic.Node.getParent 
    Kinetic.Node.getStage 
    Kinetic.Node.getStage 
    ..... 

Kinetic.Node.getStage之后重复100次以上。

我有理由相信这与我如何修改的Kinetic.Shapebecause of this article

function Datapoint() { 
this.uv = 0; 
this.royalblue = 0; 
this.royalblue2 = 0; 
this.presetId = 0; 
this.blue = 0; 
this.coolwhite = 0; 
this.green = 0; 
this.hyperred = 0; 
this.brightness = 0; 
this.clouds = 0; 
this.storms = 0; 
this.pointTime = new Date(); 
this.id = 0; 
this.profileId = 0; 
this.intensity = 0; 
this.xCoord = 0; 
this.yCoord = 0; 
this.isStartNight = false; 
this.isStartDay = false; 
this.isNight = false 
this.isDay = false; 
this.isNatural = false; 
} 

//Modify the shape object 
var DatapointObject = Kinetic.Shape; 
DatapointObject.prototype.Datapoint; 

原型那么做,我试图创建一个点的标准方式。

var point = Kinetic.Circle({<config object>}); 

我相信这可能是我错误的根源。如果是这样,我该如何解决它?

如果这不是我的错误的来源,任何人都可以借用一些建议,可以帮助我推断出问题出在哪里?

+0

Usualy,一个'最大调用堆栈大小exceeded'错误是由你重复的东西太多了,因此会导致内存泄漏造成的事实。尝试在特定位置添加一些'console.log()',并检查这些在调试控制台(Firebug/Chrome检查器)中是否重复超过100次 –

+0

我在js的顶部添加了一些断点,我认为最初的错误是。结果发现我的代码在上面很潦草,我自己添加了一个图层,而不是舞台。感谢您的快速回复@Ghillied –

+0

没问题,先生。我很高兴你能在短时间内解决问题! –

回答

1

原来,这个错误也是由于自己添加了一个图层引起的。像这样:

myLayer.add(myLayer); //<--doesn't make any sense 

这应该是

myStage.add(myLayer); //<-- fixed 
相关问题