2012-12-03 3 views
0

학교에서 프로젝트 용 타일 기반 게임을 만들고 해결할 수없는 "치명적인"오류가 발생했습니다.오류; (배열) speelVeld가 정의되지 않았습니다

uncaughtReferenceError: speelVeld is not defined. 

인 32 라인을 말한다 : 나는 희망

speelVeldBreedte=speelVeld[0].length; 

이 내가지고있어 오류가

function init(){ 
var speelVeldBreedte; 
var speelVeldHoogte; 
var speelVeld = [ 
    [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1], 
    [1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1] 
]; 

var speelTerrein = document.getElementById("speelterrein"); 
} 

speelVeldBreedte=speelVeld[0].length; 
speelVeldHoogte=speelVeld.length; 

var schaalTerrein = 20; 
speelTerrein.width = speelVeldBreedte * schaalTerrein; 
speelTerrein.height = speelVeldHoogte * schaalTerrein; 


var ctx = speelTerrein.getContext("2d"); 
ctx.fillStyle = "white"; 
ctx.fillRect(0,0,speelTerrein.width,speelTerrein.height); 
    for (var y=0; y<speelVeldHoogte;y++){ 
     for (var x=0;x<speelVeldBreedte;x++){ 
      var steen = speelVeld[y][x]; 
      if (steen> 01){ 
       ctx.fillStyle = "rgb(100,0,0)"; 
       ctx.fillRect(x*schaalTerrein,y*schaalTerrein,schaalTerrein,schaalTerrein); 
      } 
     } 
    } 

:

내 스크립트입니다 누군가가이 오류를 해결하는 방법과 정확히 무엇이 문제인지 말해 줄 수 있습니다. 미리

감사 레미

답변

1

, 라인 (32)에 전화 외부 그 기능 중 하나입니다 - 따라서, JS 변수 "를 참조 수 없습니다" 그것이 범위를 벗어 났기 때문에.

+0

그래서 모든 코드를 init 함수 안에 넣고 window.load = init;을 사용하여로드한다고 가정 해 봅시다. –

+0

적어도 init() 밖의 변수를 선언해야합니다. 실제로 init()이 호출되는지 확인하십시오. 하지만 게임 전체를 하나의 기능으로 만 들지는 않을 것입니다. –

+0

함수 밖의 코드를 넣을 때 문제는이 줄에서 나에게 알려주는 것입니다. speelTerrein.width = speelVeldBreedte * schaalTerrein; 오류가 발생했습니다 : catch되지 않았습니다. TypeError : null의 속성 'width'를 설정할 수 없습니다. –

관련 문제