2012-10-28 80 views
2

我正在嘗試將組合createjs和box 2d的豪華動物教程轉換爲Typescript。到目前爲止,我所做的一切似乎都在起作用。但現在我在這條線得到一個Uncaught TypeError: Cannot call method 'push' of undefinedTypeScript to js錯誤

this.actors.push(this); 

actors是,在.ts爲private actors = [];定義。我嘗試了許多方法,但沒有工作。任何人都知道發生了什麼事?

app.ts =>http://paste.laravel.com/8HM default.html中=>http://paste.laravel.com/8HN

使用VS 2012

回答

1

好的,所以問題在於它不是調用actorObject作爲方法,而是將它創建爲對象:new Box2d.actorObject

我剛剛做的是作爲它自己的一類,它現在都很漂亮。

1

嘗試private actors:TYPE[] = [];其中TYPE是您的陣列的類型,例如對於一系列字符串private actors:string[] = [];

這似乎對我有用。

如果沒有,那麼可能會發布一些更多的代碼 - 我無法讓您的.ts文件從您發佈的鏈接出現在源代碼視圖中,並且我無法確定哪些(幾個)腳本在您的問題所在的頁面中。

+0

對不起,粘貼了兩次相同的鏈接。固定。 – localhost

+1

我無法立即看到問題所在。也許嘗試追蹤'this'以確定它實際上是Box2d,好像不是演員var會超出範圍。 – JcFx

+0

啊......我想我已經明白了。 'this'追蹤爲'Box2d.actorObject',這意味着'this.actors'將是'Box2d.actorObject.actors',這是未定義的?也許是一個TS錯誤?由於我記得介紹視頻,Anders表示TS會自動添加'that = this',或者其他類似的東西。 – localhost