2013-03-29 2 views
0

저는 Actionscript와 Adobe Flash CS6에 완전히 익숙하지 않습니다. 조금 재미있게 게임을 만들려고 노력했습니다. 일반적인 구현 방법에 대해 물어볼 몇 가지 초보자 (또는 noob-y) 질문이있었습니다.하나의 클래스 또는 여러 장면에서 액션 스크립트를 사용할 수 있습니까?

나는 지금까지 그렇게 읽어 봤는데 새로운 플래시 프로젝트를 생성하고 그래서 문서 클래스 만들 것을 제안 문서 : 내가 전체 게임을 코딩이 MainClass을 사용하는 경우

package { 

    import flash.display.MovieClip; 

    public class MyMainClass extends MovieClip { 


     public function MyMainClass() { 

     } 

    } 

} 

을 내가 궁금하거나 장면 내에서 액션 스크립트를 포함하고 여러 장면 또는 두 가지 조합을 가질 수 있습니다. 각 장면에서 ActionScript와

package { 

    import flash.display.MovieClip; 

    public class MyMainClass extends MovieClip { 


     public function MyMainClass() { 
      StartLevel1(); 
      StartLevel2(); 
      StartLevel3(); 
      StartLevel4(); 
      StartLevel5(); 
     } 

     public function StartLevel1() { 
      // Do something 
     } 
     public function StartLevel2() { 
      // Do something 
     } 
     public function StartLevel3() { 
      // Do something 
     } 
     public function StartLevel4() { 
      // Do something 
     } 
     public function StartLevel5() { 
      // Do something 
     } 

    } 

} 

만들거나 5 장면 :

내가 뭔가를 할 것, 내 게임에서 원 5 레벨을 가지고 말할 수 있습니다? 누군가 나에게 약간의 출발점을 제공 할 수 있습니까? 감사합니다.

+0

일반적으로 나는 다른 장면을 사용하여 솔루션을 구축하는 것에 대해 조언 할 것입니다. 나는 SO 및 다른 개발자 포럼에서 여기에서 도움을 얻는 것이 더 쉬울 것이라고 생각합니다. 나는 10 년 이상 전문적으로 ActionScript/Flash 개발을 해오 고 있으며 장면의 개념을 사용하지 않았으며 동료가 사용한 프로젝트를 직접 경험하지도 않았습니다. 타임 라인 애니메이션 도구로 Flash를 사용하지만 스크립팅 및 게임 개발에 사용되지 않는 경우는 거의 없을 것입니다. –

답변

1

장면에 대해 좋은 말을하는 사람은 누구인지 잘 모릅니다.

그러나 사용자가 직관적으로 타임 라인 자체는 시간 경과에 따른 플래시 애셋의 상태를 관리하는 훌륭한 도구입니다. 사용하면 파일의 100 %를 다운로드 할 필요가 없다는 숨겨진 이점을 얻을 수 있습니다 (따라서 프레임 N으로 내보내기를 선택 해제하여 프리 로더의 필요성을 줄이거 나 없앨 수 있습니다. "라이브러리 심볼에

이 기술을 이해하는 개발자가 거의 없다는 Lars의 지적과 나는이 기술을 탐구하는 데 관심이있는 사람들을 도울 수있는 사람을 정확히 알고 있습니다. 지금 당장 당신을 도우려는 경우, 내가 귀하의 게시물을 발견하고 그것에 반응하는 경우를 제외하고는 귀하가 그 길을 선택한다면, 당신이 주로 당신 자신에 달려 있다는 것을 명심하십시오.

저는 이 아닙니다. 타임 라인 스크립트 , very few exceptions입니다. 문서 클래스를 사용하여 타임 라인 인스턴스를 제어하는 ​​"both and"접근 방식을 제안합니다.

귀하의 문서 클래스는 다음과 같이 보일 수 있습니다 : 이것은 당신이 액션의 한 줄을 변경하지 않고 다른 수준이 어떻게 보이는지 변경할 수있는 게임이다 얻는다 무엇

 
    pubic class Game extends MovieClip { 
     protected var _level:ILevel;//Interface your Level MovieClips will implement 
     protected var levelController:LevelController = new LevelControler(); 
     protected var currentLevel:int; 
     protected var maxLevels:int = 5; 

     public function Game() { 
      levelController.addEventListener(LevelEventKind.LEVEL_COMPLETE, nextLevel); 
      levelController.addEventListener(LevelEventKind.LEVEL_FAILED, gameOver); 
      startLevel(currentLevel); 
     } 

     public function startLevel(levelNumber:int):void { 
      goToLabel('Level' + String(levelNumber)); 
     } 
     public function get level():ILevel { 
      return _level; 
     } 
     public function set level(value:ILevel):void { 
      _level = value; 
      //internally, this should release all listeners to the last 
      //level object (if any) so you don't get a memory leak 
      levelController.level = _level; 
     } 
     protected function nextLevel(e:Event):void { 
      if (currentLevel < maxLevels) { 
       startLevel(++currentLevel); 
      } else { 
       //do you won logic here 
      } 
     } 
     protected function gameOver(e:Event):void { 
      //do bombed out logic here 
     } 
     protected function goToLabel(label:String):void { 
      for each (var frameLabel:FrameLabel in currentLabels) { 
       if (frameLabel.name==label) {  
        //if your swf is media-heavy, may want to check that frame 
        //is loaded if you chose to reduce/eliminate preloader 
        goToAndStop(label); 
        return; 
       } 
      } 
      trace('no such label as', label); 
     } 
    } 

을, 당신은 변경할 수 있습니다 어떻게 ILevel을 약간 다르게 구현하는 다른 기본 클래스를 할당하여 작업하십시오. LevelController의 다른 맛을 교체하여 기능을 변경할 수도 있지만 메인 문서 클래스 (이 경우 Game)는이 변경 사항을 인식합니다 (게임을 전혀 변경하지 않고 다른 변경 사항을 적용 할 수 있음).

관련 문제