2012-11-20 2 views
2


배열로지도를 만들고 싶습니다 ... 플래시로 플랫폼 게임 creatio에 대한 많은 자습서를 보았지만지도가 움직이는 사람은 없었습니다.키보드로 배열에서지도 옮기기

그래서, 나 자신에 의해 그것을하려고합니다. 지도를 이동하기 전에지도를 만들어야하는데, 내 문제입니다. 3 층 코드를보고 의견을 말하도록하십시오.

플래시 나 오류 # 1009, 그는 null 객체 참조의 속성이나 메서드에 액세스 할 수 없습니다 발표와 나는 한 번에 표시되지 않는 이유는 무엇입니까?

at Sansnom_fla::MainTimeline/createMap() 
at Sansnom_fla::MainTimeline/frame1() 

레이어 1

var grid:MovieClip = new MovieClip(); 

// liste d'affichage 
addChild(grid)      

createMap() 

레이어 2

function createMap():void{ 
    for (var i:int=0; i<20; i++){        
     for (var j:int=0; j<15; j++){       

      var T:int = 32 
      var dT:int = T*.5 
      var f:int = map[j][i] 

      if(f>0) { 
       var t:block = new block() 
       t.x= i*T;  
       t.y= j*T;  
       t.gotoAndStop(f)   
       grid.addChild(t) 
      } 
     } 
    } 
} 

레이어 3

var map:Array = [ 
        [1,1,1,1,1,1,10,0,0,11,1,1,1,1,1,1,1,1,1,1], 
        [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
        [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
        [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,1], 
        [1,0,0,0,0,0,6,1,0,0,4,4,4,4,0,0,6,1,0,1], 
        [1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
        [1,0,0,0,1,6,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
        [1,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
        [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
        [1,0,0,0,0,6,0,0,1,0,0,1,0,0,1,0,0,1,2,1], 
        [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
        [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
        [1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
        [1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,3,1], 
        [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] 
        ] 

var stock:Array = [ 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] 
       ] 

감사합니다 많이! Ps : 배울 수 있듯이, block은 한 번 프레임이 특정 블록 인 movieClip입니다.

+0

레이어 2에서 맵이 null이 아닌 것은 확실합니까? stacktrace에 주어진 줄은 무엇입니까? . 김정일 추정 불가능 디부 accéder 일품 PROPRIETE OU à 라 메도 디부 단한 참조 디부 오브제 NUL ("형식 오류 : 오류 # 1009 –

+0

아니, 거기 고체, , 내가 그냥"1 "로 시도 스택 트레이스를 보자 그것은 null 객체 참조 방법에 대한 액세스) Sansnom_fla :: MainTimeline/프레임 1에서 Sansnom_fla :: MainTimeline/createMap() \t()에서 \t는 " – Eustache

답변

1

왜 레이어간에 코드를 나누고 있습니까? 그러지 마. 그것은 아직 존재하기 전에 또한 당신은 (레이어 3의 코드가 실행될 때까지 생성되지 않습니다)는 나의 추천 1 개 프레임에, 1 층에 모두 충실하는 레이어 2 map을 요구하고있다.

는 다음과 같이 코드 순서를 조정합니다

var map:Array = [ 
       [1,1,1,1,1,1,10,0,0,11,1,1,1,1,1,1,1,1,1,1], 
       [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
       [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
       [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,1], 
       [1,0,0,0,0,0,6,1,0,0,4,4,4,4,0,0,6,1,0,1], 
       [1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
       [1,0,0,0,1,6,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
       [1,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
       [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
       [1,0,0,0,0,6,0,0,1,0,0,1,0,0,1,0,0,1,2,1], 
       [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
       [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
       [1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
       [1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,3,1], 
       [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] 
       ]; 

var stock:Array = [ 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] 
      ]; 

function createMap():void{ 
    for (var i:int=0; i<20; i++){        
     for (var j:int=0; j<15; j++){       

      var T:int = 32 
      var dT:int = T*.5 
      var f:int = map[j][i] 

      if(f>0) { 
       var t:block = new block() 
       t.x= i*T;  
       t.y= j*T;  
       t.gotoAndStop(f)   
       grid.addChild(t) 
      } 
     } 
    } 
} 

var grid:MovieClip = new MovieClip(); 

// liste d'affichage 
addChild(grid); 

createMap(); 

는 또한 ; 문자를 잊지 마세요, 당신이 그들을 놓치게하는 습관이있다. 어쨌든 이것이 도움이되기를 바랍니다!

+0

당신을 감사하는 것은 불가능합니다! 그것은 작동합니다! 여기 있습니다! – Eustache

+0

@ Youustache thats 내가 너에게 말한 것 : D –

+0

오! 죄송합니다. 저는 플래시의 초보자입니다. 감사합니다. – Eustache