2011-11-24 70 views
2

這可能是非常基本的東西,但我卡住了,有點無知。構建Coffeescript並使用@關鍵字

我最近在CoffeeScript上寫了一個貪吃蛇遊戲,但我並不滿意我的方式structured the code

我想重寫這個使用類。我有一個遊戲課,一個Snake課,一個食物課。我這樣做是有道理的。但是,爲了訪問變量和函數,我使用'@'(this)關鍵字,並且我覺得我完全過度使用它。例如,我在我的Game類的頂部有一個常量列表。我不得不聲明它們全部爲@CONSTANT才能夠訪問它們。或者,在方法中:

clearCanvas: -> 
    @ctx.clearRect 0, 0, @canvas.width, @canvas.height 

方法調用也是如此。例如:

init: -> 
    window.snake = new Snake() 
    @showStartScreen() 

有人可以告訴我這樣做是否可行,或者我應該如何構建我的代碼?如果有人願意爲我審查這個代碼,我可以把這個代碼與我目前正在使用的代碼聯繫起來。 (編輯:其實here it is

非常感謝。

回答

5

如果您使用的是CoffeeScript類,那麼您將大量使用@。必須通過@this訪問對象上的任何屬性。下面是你應該如何使用常量:

class Game 
    up:  1 
    right: 2 
    down: 4 
    left: 8 

    someMethod: -> 
    console.log @up, @right, @down, @left 

console.log "Class accessible #{Game::up}" 

g = new Game 
console.log "Object accessinble #{g.up}" 

g.someMethod() 

此外,@thejh是正確的。您應該使用2個空格寬度的軟標籤。

+0

我把一個鏈接到完整的代碼。感謝您清理我將大量使用@。有沒有其他替代方案或者這是一個好的工作方式? – cabaret

+0

嘿,看看編輯:) – bloudermilk

+0

啊,謝謝。在他們面前用'@'聲明他們實際上並沒有什麼意義,現在呢?我刪除了那些;代碼似乎仍然正常工作。謝謝! – cabaret

2

除了選項卡(你應該使用空格),它看起來很好。哦,最後一行中的分號不應該在那裏。 :)

+0

呵呵。錯過了分號,顯然我出於某種原因在TextMate中使用了軟標籤。感謝您指出了這一點 ;) – cabaret