2012-03-16 49 views
0

我正在玩一個非常簡單的小射手,瞭解easeljs,tweenjs和canvas編碼。我遇到了困擾我的問題。Javascript onkeyup/onkeydown輸入錯誤

我在Chrome中出現unexpected end of imput錯誤,它代表line 1。那是怎麼回事?

請注意,在下面的代碼中,我已經註釋掉了所有的鍵盤輸入代碼。錯誤不再出現。當我取消註釋該文件。 addEventListenerwindow.addEventListener輸入代碼錯誤再次拋出。進一步的實驗讓我相信它與事件對象有關,但除此之外我不知道。

希望有人能幫助!

window.addEventListener('load', eventWindowLoaded, false); 

function eventWindowLoaded() { 
    init(); 
} 

function init() { 
    console.log("init hit"); 
    canvas = document.getElementById("canvas"); 
    stage = new Stage(canvas); 

    createStarField(); 

    shipImg = new Image(); 
    shipImg.onload = onShipLoaded; 
    shipImg.src = "ship1.png"; 

    Ticker.setFPS(30); 

    Ticker.addListener(window); 

/* document.addEventListener('keydown', function(event) { 
     switch(event.keyCode) { 
      case 37: // left 
       moveLeft = true; moveRight = false; 
       break; 

      case 38: moveUp = true; moveLeft = false; 
       break; 

      case 39: moveRight = true; moveLeft = false; 
       break; 

      case 40: moveDown = true; moveUp = false; 
       break; 
     } 
    }, false); 

    document.addEventListener('keyup', function() { 
     switch(e.keyCode) { 
      // left 
      case 37: moveLeft = false; 
       break; 
      // up 
      case 38: moveUp = false; 
       break; 
      // right 
      case 39: moveRight = false; 
       break; 
      // down 
      case 40: moveDown = false; 
       break; 
    } 
}, false); 
*/ 

/*function onKeyDown(e) { 
    //if(!e) { var e = window.event; } 

    switch(e.keyCode) { 
     // left 
      case 37: moveLeft = true; moveRight = false; 
      break; 

      case 38: moveUp = true; moveLeft = false; 
      break; 

      case 39: moveRight = true; moveLeft = false; 
      break; 

      case 40: moveDown = true; moveUp = false; 
      break; 
    } 
} 

function onKeyUp(e) { 
    // if(!e) { var e = window.event; } 
    switch(e.keyCode) { 
     // left 
     case 37: moveLeft = false; 
      break; 
     // up 
     case 38: moveUp = false; 
      break; 
     // right 
     case 39: moveRight = false; 
      break; 
     // down 
     case 40: moveDown = false; 
      break; 
    } 
*/ 
    function checkMovement() { 
     if(moveLeft) 
     { 
      ship.x -= speed; 
      if(ship.x < 0) 
       ship.x = 640; 
     } 
     else if(moveRight) 
     { 
      ship.x += speed; 
      if(ship.x > 640) 
       ship.x = 0; 
     } 

     if(moveUp) 
     { 
      if(ship.y - speed > 24) 
       ship.y -= speed; 
     } 
     else if(moveDown) 
     { 
      if(ship.y + speed < 460) 
       ship.y += speed; 
     } 
    } 

    function onShipLoaded() { 
    ship = new Bitmap(shipImg); 
    ship.regX = ship.image.width * .05; 
    ship.regY = ship.image.height * 0.5; 
    ship.x = 320; 
    ship.y = 450; 

    stage.addChild(ship); 
} 

function createStarField() { 
    console.log("create star field"); 
    stars = new Array(); 

    g = new Graphics(); 
    g.setStrokeStyle(1); 
    g.beginStroke(Graphics.getRGB(255,255,255)); 
    g.beginFill(Graphics.getRGB(255,255,255)); 
    g.drawCircle(0,0,1); 

    for(var i = 0; i < 100; ++i) { 
     var s = new Shape(g); 
     stars.push(s); 
     s.x = randRange(10,630); 
     s.y = randRange(-250, 470); 
     s.scaleX = randRange(0.5, 2); 
     s.scaleY = s.scaleX; 
     s.alpha = Math.random() + 0.2; 

     stage.addChild(s); 
    } 
} 

function randRange(min, max) { 
    return Math.floor(Math.random()*(max - min)) + min; 
} 

function tick() { 
    console.log("tick hit"); 
    updateStarField(); 
    checkMovement(); 
    stage.update(); 
} 

function updateStarField() { 
    console.log("updateStarField()"); 
    var curStar; 
    var limit = stars.length; 
    for(var i = 0; i < limit; ++i) { 
     curStar = stars[i]; 
     curStar.y += 4 
      if(curStar.y > 480) { 
       curStar.x = randRange(10,630); 
       curStar.y = -randRange(20, 450); 
      } 
    } 
} 
+0

哪兒的右大括號'init'?它似乎缺少。 – Zeta 2012-03-16 23:01:46

+1

http://code.google.com/p/chromium/issues/detail?id=11037 – epascarello 2012-03-16 23:10:14

+0

謝謝!我的問題幾乎完全相同 - 不是引用文件末尾的行號,而是引用第1行,無論它是空白還是註釋等。 – 2012-03-16 23:33:37

回答

1

最後註釋掉onKeyUp(e)功能缺少右大括號(}

+0

謝謝 - 即使糾正錯誤,錯誤仍然保持不變。 – 2012-03-16 22:54:30

+0

您的文件是否緩存?點擊ctrl-R以確保它抓取最新的。 – epascarello 2012-03-16 23:10:53