2010-11-28 5 views
0

나는 비교적 간단한 질문이 있습니다. 타임 라인을 사용하지 않고 여러 페이지 응용 프로그램을 다시 만드는 가장 좋은 방법은 무엇입니까? 나는 pagemanager 클래스를 만들었고 클래스를 추가하고 제거했다. 클래스는 페이지로 동작했다. 이제는 이것이 매우 효과적인 방법처럼 보이지 않습니다. flex는 HTML과 비슷한 접근 방식을 제공한다고 생각하지만이 시점에서 Flex로 전환하는 것은 이미 늦었습니다.타임 라인없는 조회수 (페이지)

제안 사항? 미리 감사드립니다.

+1

왜 이것이 효과가 있지 않습니까? – Mattias

답변

1

Flex에서 viewstack과 비슷한 방식으로 작동하는 클래스를 만드는 것이 좋습니다. 인터페이스 (예 : IPage)와 함께 인터페이스를 사용하여 뷰 스택에서 페이지를로드하고 언로드/처 리하도록합니다. 일단 viewstack에서 changePage 메소드를 실행하면 현재 페이지를 삭제하고 새 페이지를 엽니 다. 이 기능을 실행하면 쉽게 전환을 추가 할 수 있습니다.

이 같은

뭔가 (이 코드는 확인되지 않습니다) :


_view = new ViewStack(); 
_view.addPage(Pages.INTRO, new IntroPage()); 
_view.addPage(Pages.OUTRO, new OutroPage()); 
_view.changePage(Pages.INTRO); 

IPage.as

package 
{ 
    public interface IPage 
    { 
     function open() : void 

     function close() : void 
    } 
} 

ViewStack.as

package 
{ 
    import flash.display.Sprite; 

    public class ViewStack extends Sprite 
    { 
     public function ViewStack() 
     { 
      super(); 
     } 

     public function addPage(pageID : String, page : IPage) : void 
     { 
      // add page to list 
     } 

     public function removePage(pageID : String) : void 
     { 
      // remove page from list 
     } 

     public function changePage(pageID : String) : void 
     { 
      if(_currentPage) 
      { 
       _currentPage.close(); 
       removeChild(_currentPage); 
      } 

      _currentPage = getPageById(pageID); 
      _currentPage.open(); 
      addChild(_currentPage); 
     } 

    } 
} 
+0

실제로 최상의 솔루션과 같습니다. 이것의 주된 문제점은 페이지를 삭제 한 후에 해당 페이지의 모든 eventlistener가 여전히 실행 중이므로 수동으로 제거해야한다는 것입니다. 아직도 할 수 있지만 매우 편리하지는 않습니다. 또한 인터페이스 (수치심)에 익숙하지 않은데 왜 인터페이스에서 열고 닫는 기능을 배치 할 것이고 viewstack 클래스는 아니며 인터페이스에서 어떻게 작동합니까? – omgnoseat

+0

인터페이스를 사용하면 동일한 인터페이스를 구현하고 정의 된 메소드/기능 설정이 있어야하는 여러 페이지를 가질 수 있습니다. 예 : IntroPage와 OutroPage는 열기/닫기 메서드에서 서로 다른 기능을가집니다. 그러나 이들 메소드가있는 한 실제 클래스 (및 참조)를 참조하지 않고 뷰 스택에서 사용할 수 있습니다. 당신은 또한 당신이 mehods를 오버라이드하는 추상 클래스 (AbstractPage)로이를 수행 할 수 있습니다. – Mattias

관련 문제