2012-09-19 3 views
0

Android 용 런 게임 앱을 만들기 시작했습니다. 타일과 Adobe Air를 사용하여 플래시로 만들었습니다. 게임은 플레이어가 자동으로 오른쪽으로 달리고 땅을 따라 점프하거나 슬라이딩하여 장애물을 피하는 것입니다.as3 및 플래시로 만든 실행중인 게임에서 오래된 타일 제거

필자는 항상 배열에서 첫 번째 레벨을 취하고 시작 레벨로 사용하는 함수를 만들었습니다.

private function createLevel() 
    { 
     map_level.levell();            

     level = map_level.level1; 

     for(var t = 0; t < level.length; t++) 
     { 
      for(var u = 0; u < level[t].length; u++) 
      { 
       if(level[t][u] != 0) 
       {         
        var new_tile:platform_tile = new platform_tile;  

        addChild(new_tile);   
        new_tile.gotoAndStop(level[t][u]); 
        new_tile.x = u * 32; 
        new_tile.y = t * 32; 

        tiles.push(new_tile);        
       } 
      } 
     } 
     total_tile_width += u; 
    } 

그런 다음 경로 배열에서 임의의 수준을 사용하는 함수를 만듭니다. 플레이어가 트랙을 따라 일정 길이에 도달하면

private function random_level() 

이 레벨

는 첫 번째 트랙의 끝에 추가되고, 다음 트랙이 무단 보인다 후 카메라 플레이어를 다음되도록했다.
private function update_level() 
    { 
     random_level(); 

     for(var t = 0; t < mid_lvl.length; t++) 
     { 
      for(u = 0; u < mid_lvl[t].length; u++) 
      { 

       if(mid_lvl[t][u] != 0) 
       {         
        var new_tile:platform_tile = new platform_tile;  

        level[t][u + total_tile_width] = mid_lvl[t][u]; 


        addChild(new_tile);   
        new_tile.gotoAndStop(mid_lvl[t][u]); 
        new_tile.x = (u + total_tile_width) * 32; 
        new_tile.y = t * 32; 

        tiles.push(new_tile);        
       } 
      } 

     } 
     // Indstiller hvis spilleren skal have en stigende fart 
     if(movementspeed < 40) 
     { 
     movementspeed = movementspeed + 2; 
     } 
     else 
      movementspeed = movementspeed; 
     total_tile_width += u; 
     trace ("speed: " + movementspeed); 
    } 

이 모든

은해야하고 PC와 같은 완벽한 또한 게임 기능으로 작동하지만, 이미 재생 된 이전 수준을 제거하기 때문에하는 방법을 알아낼 수 없기 때문에 전화가 그것을 오버로드 빠른 것 전화 메모리에는 많은 레벨이있을 것입니다.

나는 (오래된 타일이 다시 무대를 떠났다 ")로 removeChild 같은 필요하지만 오래된뿐 아니라 모든 타일 타일을 찾는 방법에 더 idear 없어. 수

누구든지 나를 도와? BTW 희망 당신이하지 최고의 영어 쓰기에 메신저로 내 질문을 이해합니다.

모르 텐은

+0

개체 풀링이 모바일 최적화를 도와야한다고 생각합니다. 여기에서 확인하십시오. http://help.adobe.com/en_US/as3/mobile/WS948100b6829bd5a6-19cd3c2412513c24bce-8000.html 및 동영상 자습서 : http://www.gotoandlearn.com/play.php?id=160 –

답변

0

당신은이 BitmapData 객체를 사용해야합니다.

  • 2 화면의 크기입니다. 우리는 전화 그들 screenBuffer1과 screenBuffer2
  • 다른 하나는 타일의 너비 이상으로 화면보다 큽니다.
  • 그리기 스프라이트 screenBuffer1에
  • 시작 화면
  • 복사 screenBuffer1에 현재 보이는 영역의 보이는 모든 타일을 그림으로써 terrainBuffer 초기화

    1. : 우리는 terrainBuffer 다음

호출 화면 버퍼를 스테이지에 연결

N 오우 우리는

  • 이 screenBuffer2는
  • 오프셋 계속 증가 무대에 부착

    1. 복사
    2. 그리기 스프라이트 screenBuffer2에 스크롤 양만큼 오프셋 screenBuffer2에 현재 표시 영역을 스크롤 및 대체 screenBuffer1 및 screenBuffer2 시작 그래서 다른 하나를 그릴 때 하나가 보입니다.

      오프셋이 타일의 witdh에 도달하면 :

      if(offset>tileWidth){ 
          offset-=tileWidth; 
          // Move content of terrainBuffer to the left by tileWidth pixels 
          // Draw a new column of tile on the right 
      } 
      

      계속 반복하십시오.

    관련 문제