2013-08-28 2 views
-1

이것은 내가 작업하고있는 대규모 UI 문제로 인해 발생하는 일부 문제를 해결하는 아키텍처 질문입니다.플래시 아키텍처 및 "TypeError : Error # 1009 :"

배경 : Scaleform과 함께 사용하기 위해 Flash CC (in-game UI)를 사용하고 있습니다. 나는 어딘가 분위기가 적당하고 지식이 풍부하다. 아마도 후자는 위험 할 정도입니다.

내 현재의 구조는 다음과 같습니다

  • 부모 :이 관리하고 UI의 모든 인스턴스를 생성합니다. 자체 FLA/SWF 파일이 있습니다.
  • 구성 요소 1 : 이것은 자신의 FLA/SWF 파일
  • 구성 요소 2, 부모의 구성 요소 중 하나입니다 : 이것은 자신의 FLA/SWF 파일
  • 공유 HUD 자산으로, 부모의 또 다른 구성 요소입니다 : 모든 요소 (자체 FLA/SWF 파일) 간의 공통 요소를 포함합니다. 해당 심볼의 모든 심볼을 내 보낸 다음 해당 구성 요소의 라이브러리로 가져옵니다.
  • 공유 자산 : 모든 UI (단추, 배경 등)에 공통적으로 사용됩니다. HUD 자산과 마찬가지로 내보내거나 가져옵니다.

여기에서 의도하는 것은 여러 유형의 구성 요소를 각 구성 요소 파일에 저장할 수 있도록하는 것입니다. HUD는 사용할 구성 요소를 선택하고 HUD를 "조합"합니다. 아티스트는 더 큰 HUD 파일을 건드리지 않고 코드에서 주위를 숙이고하지 않고 구성 요소 및 에셋 파일에서 작업 할 수 있습니다.

처음에는 모든 애셋을 메인 부모에 저장하려고했으나 플래시는 여러 레이아웃에 대해 가져온 심볼을 관리하는 데 약간의 어려움이 있습니다. 중복 글꼴, 링크가 끊어지는 등의 문제가 발생합니다.

다음은 순수 AS를 사용하여 인스턴스를 만들었습니다. 즉, 가져온 AS 파일의 "component = new component()"를 사용했지만 인스턴스를 만들었습니다. 부모가 액세스 할 수없는 Flash IDE에서 생성 된 레이아웃과 관련된 문제로 (AS에서만 수행되지는 않음) (이 문제가 있다고 가정하고 있는데이 사이트 및 다른 사이트에서 유사한 문제가 발생하는 일부 사용자를 잘못 읽고있는 것일 수 있습니다.)

이제 SWF 파일을로드해야 문제가 해결되지만, 이로드 된 SWF 파일에서 여러 "TypeError : Error # 1009"로 실행되는 m; 구체적으로 다른 Scaleform 구성 요소 (ButtonBar)에서 참조하는 버튼 (AnimatedToggleButton)입니다. 버튼과 ButtonBar는 Shared Assets에서 HUD 구성 요소로 가져 오지만 AnimatedToggleButton은 다른 곳에서는 사용되지 않습니다. 제대로 내보내고 가져 오며 구성 요소 SWF에서 컴파일 될 때 작동하지만 SWF가로드 될 때 상위 클래스에서 누락 된 클래스/null로 나타납니다. 나는 보통의 트릭을 모두 시험해보고 무대를 기다리고있다.

이런 종류의 일에 적합한 아키텍처인가? 그리고 그것이 맞다면 가져온 기호에 어떤 대가가 있습니까? 사용하지 않으면 존재하지 않습니까?

+0

저는 한 시간 동안 답변을 쓰는 ​​것을 발견했습니다. 그러나 정말로 질문을하지 않고이 질문에 응답 할 수있는 방법이 없기 때문에 항상 어딘가에서 멈춰야합니다.기본 지침 비록 : 구성 요소에 코드를 두지 말고 내용 (글꼴, 그라디언트, 텍스처)을 공유하는 데 사용하십시오 –

+0

시도해 주셔서 감사합니다. 타임 라인에는 코드가 없지만 공유 에셋 파일에는 코드가 전혀 없다는 것이 좋습니다. 따라서 버튼이 공유되는 경우 문자 그대로 상태 관리 코드가 아닌 버튼 그래픽에 불과합니다. 이는 오토 데스크가 Scaleform CLIK 라이브러리를 사용하는 방법에 비유 된 것으로 보인다. – steveb

+0

마일리지가 다를 수 있지만 구성 요소에 코드가없는 것이 좋습니다. 당신이 그 길을 가면 모든 요청을 처리하기 위해 구성 요소 자체를 부풀게하는 일에서 벗어나기가 정말 어려워집니다 (한 화면에서 특정 방식으로 버튼 움직이기, 버튼의 세로 텍스트, 특정 화면 의존적 방식으로 텍스트 수정하기) 사용자 건강에 ...). 콘텐츠 만 공유하고 그 다음에'new BasicButton (mc_that_is_or_is_not_a_component)'와 비슷한 작업을 수행하면 이러한 시나리오를보다 쉽게 ​​처리 할 수 ​​있습니다. –

답변

0

심볼 속성에서 "프레임 1로 내보내기"를 선택 했습니까?

그렇다면 스테이지에 나타나는 심볼 만 내보내고 상위 SWF에서 액세스 할 수 있습니다.

+0

"프레임 1에서 내보내기"가 선택되어 있습니다. 무대에없는 기호에 대한 내 actionscript 코드 라이브러리에 빈 클래스 파일을 추가하는 행운을 보았지만 코드에서 인스턴스화하려는 모든 애셋에 대해이 작업을 수행해야하는 것이 과도한 것으로 보입니다. – steveb