2010-01-11 4 views
1

주 루프를 하나 사용하고 스테이지에서 개별 개체를 제어하는 ​​데있어 주 클래스가 갖는 장점과 단점은 무엇입니까? 그 자체로해야 할 일을하는 책임. 가장 좋은 방법은 무엇입니까?여러 루프가있는 장점과 단점

답변

0

"루프"가 반드시 여기에 적합한 용어인지는 잘 모릅니다.

많은 클래스 (대부분의 주요 시각적 요소는 자체 내부 논리로 고유 한 클래스를 가짐)가있는 것과 달리 모든 것을 제어하는 ​​단일 DocumentClass를 갖는 것에 대해 이야기하고 있다면 어느 정도는 개인의 취향. 그러나 일반적으로 가능한 한 우려를 분리하는 것이 좋습니다.

주 문서가있는 경우 플레이어와 적 몬스터라는 두 개의 문자가있는 경우 문서에 코드를 모두 쓰고 싶지는 않습니다. 대신 플레이어와 몬스터가 각각 자신의 내부 코드를 갖기를 원합니다. 그런 식으로 나중에 다른 괴물을 추가하는 것은 쉽습니다. 예를 들어 말이 되겠습니까?

각 몬스터에 대해 복잡한 로직을 모두 두 번 쓰는 대신 몬스터 클래스를 만든 다음 무대에 백만 개를 놓아도 항상 같은 방식으로 반응한다는 것을 알게됩니다. 코드를 한 번만 작성하면됩니다.

의미가 있습니까? 그것은 일종의 모호한 질문이지만, "프로그래머의"접근법을 원한다면 가능한 한 적은 양의 코드를 작성하는 것이 가장 좋습니다. 플래시 아키텍처의 경우, 이는 코드를 가장 효율적으로 재사용 할 수있는 곳에서 코드를 사용하게하는 것을 의미합니다.

도움이 되길 바랍니다!

+0

나는 당신의 말을 보았습니다. 그러나 나는 모든 논리를 주 수업에 붙이지 않을 것이다. 나는 각 객체의 모든 행동을 자신의 클래스에 넣을 것이다. 그러나 나는 하나의 중앙 집중식 루프에서 그들의 행동을 호출하는 것이 더 쉬울 것이라고 생각했습니다. 이렇게하면 게임을 중지하거나 일시 중지하거나 재설정 할 수 있습니다. 모든 것이 한 번에 중단됩니다. 루프가 개별 표시 객체 안에 모두 캡슐화되어있을 때 루프를 추적하는 것은 매우 어렵습니다. – numerical25

+0

제가 생각하기에, 당신이 사용할 수있는 한 가지 방법은 LoopManager 클래스를 작성하고이를 Singleton으로 구현하는 것입니다. 즉, LoopManager의 인스턴스는 하나 뿐이며 다양한 객체 모두에 대한 참조가 있습니다. 그런 다음 루프가 시작되면 LoopManager에 루프를 등록 할 수 있습니다. 루프를 중지해야하는 경우 LoopManager.pauseAll()과 같은 작업을 수행하면 설정됩니다. 그 방법은 하나뿐입니다. 당신이하는 일에 따라 가장 좋은 방법과는 거리가 멀 수도 있습니다. Google "AS3 Singleton Pattern"에 익숙하지 않은 경우 – Myk

+0

그건 의미가 있습니다. 확실히 영리합니다. 나는 그것을 조사해야 할 것이다. 루프를 위해 싱글 톤을 만드는 누군가는 들어 보지 못했습니다. 하지만 똑똑해 보인다. – numerical25

0

C# 용 XNA 프레임 워크에서 사용되는 모델을 복사하는 경향이 있습니다. 즉, 하나의 주요 업데이트 루프가있는 클래스가 있습니다. 그런 다음 모든 엔티티를 반복하고 업데이트 루프를 호출합니다.

0

단일 메인 루프를 사용하면 일시 중지/일시 중지 해제 기능을 쉽게 추가 할 수 있습니다. 일반적으로 비 - 플래시 게임 엔진은 단일 메인 게임 루프를 갖는다. 개별 객체는 메인 루프에서 호출되는 update()draw() 함수를가집니다.

다음은 Flash의 개념에 대한 설명입니다. Pause Your Game in Flash AS3.

관련 문제