2012-11-16 98 views
2

我是javascript的新手。我已經編寫如下:爲什麼我的函數未定義?

function Vec2(x_,y_) 
{ 
    this.x = x_; 
    this.y = y_; 
} 

文件中後來我創建一個函數是這樣的:

// Init game field array 
var initGameField = function() { 
    var screenCenter = vec2(canvas.width/2, canvas.height/2); 
    var index = 0; 

    // Init gamefieldArray 
    for(var y = 0; y < maxVerticalBubbles; y++) 
    { 
     if(y%2) 
     { 
      for(var x = 0; x < maxHorizontalBubbles - 1; x++) 
      { 
       var initPoint = vec2(cellSize/2 + (screenCenter.x - ((maxVerticalBubbles - 1) * cellSize/2)) + (x * cellSize), 
           canvas.height/2 + (cellSize/2) + y * cellSize/1.1); 

       gameFieldArray[index] = initPoint; 
      } 
     } 
     else 
     { 
      for(var x = 0; x < maxHorizontalBubbles; x++) 
     { 
       var initPoint = vec2(cellSize/2 + (screenCenter.x - (maxVerticalBubbles * cellSize/2)) + (x * cellSize), 
           canvas.height/2 + (cellSize/2) + y * cellSize/1.1); 

       gameFieldArray[index] = initPoint; 
      } 
     } 
    } 
} 

但是,當我試圖在JavaScript的-file我得到的最終運行initGameField功能「initGameField」中的「vec2未定義」錯誤......應該如何做到這一點?爲什麼vec2沒有被識別,因爲它在initGameField函數之前和運行initGameField函數之前被引入?

回答

8

JavaScript是大小寫敏感的,你的函數定義爲VEC 2但你嘗試使用VEC 2

還要確保您使用new關鍵字創建一個新的實例來調用它。

var initPoint = new Vec2(cellSize/2 + (screenCenter.x - ((maxVerticalBubbles - 1) * cellSize/2)) + (x * cellSize), 
          canvas.height/2 + (cellSize/2) + y * cellSize/1.1); 
+4

他必須構造它,而不僅僅是調用。它應該是'var screenCenter = new Vec2(canvas.width/2,canvas.height/2);' – Esailija

+0

謝謝,現在工作! :) – hedeic

相關問題