2011-04-27 3 views
0

플래시에서 무언가를 그릴 때마다 스프라이트 나 무비 클립 대신에 fl.core.UIComponent를 하위 클래스로 지정합니다 (너비/높이 구현이 NB이므로 Flex UIComponent가 아닙니다).플래시의 fl.core.UIComponent 서브 클래 싱

예를 들어 버튼이 UIComponent에 적합한 경우를 생각해보십시오. 버튼에는 아이콘, 텍스트 문자열 및 공개 화살표가 있습니다. 즉 3 명의 아이들. 나는이 3 명의 아이들을 UIComponents로 만들 것입니다.

폭/높이 메서드 & 속성을 재정의하는 Sprite의 하위 클래스를 만들 수 있지만이 방법으로 UIComponent를 사용하는 사람은 어떤 단점도 느끼지 않습니까?

+2

Sprite의 너비/높이 구현에 대해 미친 점은 무엇입니까? – shanethehat

+0

Sprite- 읽기 : .width 및 .height는 현재 보이는 크기를 알려줍니다. 따라서 프로그래밍 방식으로 그려진 100px 너비의 선을 1px 높이로 중심점을 중심으로 회전 시켰다고 가정 해 보겠습니다. 즉 반경 50px의 원을 그리는 것입니다. 선의 회전 각도가 90 도인 경우 스프라이트의 너비는 100이고 45 도의 너비는 50이고 180 도의 너비는 1입니다. 그래서 Sprite의 크기를 조정하려면 : .width 스프라이트의 크기를 수정합니다. 따라서 라인이 현재 180 °로 설정되어 있으면 sprite.width = 100은 scaleX를 10,000으로 설정합니다. 폭을 설정했을 때 선의 각도가 45 °이면 결과 scaleX는 5000이됩니다. – hooleyhoop

+0

그 경우 Sprite를 포함하지 않고 선 너비를 사용할 수 없습니까? 난 실제로 UIComponent를 사용하지 못했지만 swf에 약간의 크기를 추가한다고 상상합니다. – shanethehat

답변

1

내가 Flash에서 뭔가를 그리려 할 때마다 그것의 이 (NB이 플렉스 UIComponent되지 않습니다) 온건 너비/높이를 구현 때문에 내가 fl.core.UIComponent 대신 스프라이트 나 무비 클립을 서브 클래스입니다.

나는 프로젝트 요구 사항에 따라 다르다고 생각합니다. 다른 fl.controls를 사용하는 경우 그것은 당신이 상상 예를 들어,

(사용 dataProviders에서는 나 주변의 다른 데이터를 전달 같은) 여러 가지 이유로 플래시 구성 요소의 나머지와 호환 사용자 정의 구성 요소를 가지고 적합 할 수 있습니다 버튼 - UIComponent의 유스 케이스 - 버튼에는 아이콘, 텍스트 문자열 및 공개 화살표가 있습니다. 예 : 3 어린이 : 나는이 3 개의 자식을 UIComponents로도 만들 것입니다. Button 구성 요소 (fl.controls.Button가) 이미 setStyle()를 사용하여 설정 아이콘이 있기 때문에

이 예는 특히 좋은 것이 아니다 :

myButton.setStyle("icon", MyIconClass); 

나는 내가 할 수있는 알고 내 너비를 오버라이드하는 스프라이트/ 높이 방법 & 속성이지만 누구나 이런 방식으로 UIComponent를 사용하는 데 대한 단점이 있습니까?

개인적으로 가능한 한 단순하게 유지하려고합니다. UIComponent를 서브 클래스 화하는 데 필요한 경우 Flash V3 구성 요소 아키텍처 (fl.controls)를 사용하여 구성 요소의 수명주기를 알고 있어야합니다. 더 많은 인스턴스를 사용할 때 눈에 띄게되는 성능 문제를 야기 할 수 있으므로 자주 커밋하거나 무효화하지 않도록하십시오.

Jeff Kamerer의 Creating ActionScript 3.0 components in Flash에 대한 아주 훌륭한 devnet 문서 시리즈가 있습니다. 여기에서 다루는 주제 중 일부는 다음과 같습니다

  • 은 구성 요소에 대한 실시간 미리보기를 구현
  • 파견 이벤트
  • 지원 스타일을 쉽게 구성 요소 무비 클립 심볼의 레이어와 프레임을 설정 편집 가능한 스킨
  • 무효화 모델을 사용하여 도면 관리
  • 포커스 관리
  • 당신이 UIComponents의 하위 클래스를하지 않고 크기 조정/위치를 처리 할 수 ​​있는지는
  • 핸들 키보드 입력
  • 은, 짧은에,

그래서

  • 구성 요소 패널에 구성 요소를 배포 액션 스크립트 정의를 위해 컴파일 된 클립 심을 만들어 그것을 추천 할 것입니다. 더 간단할수록 좋습니다. 또한 프로젝트의 일부를 마이그레이션해야 할 때 V3 구성 요소에 대한 종속성을 도입하지 않을 것입니다. UIComponent를 하위 클래스 화해야하는 경우 가능한 한 간단하고 가볍게 유지하십시오. 개인적으로 나는 그것들이 이미 충분히 복잡하다고 생각하지만 최소한 V2 (actionscript 2) 컴포넌트보다 낫다.

    HTH

  • +0

    흠, 시간을내어 도와 줘서 고마워. 내가 분명히했는지 모르겠다. @ Jeff의 기사에서 다룬 전체 구성 요소를 만드는 데 관심이 없습니다. 필요한 모든 기능은 Sprite 또는 UIComponent가 width 및 height 속성을 처리하는 방식을 제외하고 Shape에 있습니다. 당신은 간단하게 말하며, 'Sprite extends'를 'extends UIComponent'로 변경하는 것보다 더 간단하지 않습니다. 그게 내가해야 할 일이지만, 후회할 것입니까? 감사합니다 – hooleyhoop

    +0

    @ fakeAccount22 좋아, 그럼 당신의 프로젝트가 fl.controls에 의존한다면 큰 문제가 아닙니다. configUI() 및 draw() 메서드를 재정 의하여 간단히 완료하면됩니다.난 당신이 그것의 내부에 다른 3 개의 구성 요소를 포함하는 어떤 이유로 새로운 Button UIComponent를 만들려고한다고 생각했지만, 분명히 오해했습니다. –

    +0

    당신의 도움에 감사합니다. – hooleyhoop