2012-12-06 59 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 
相關問題