2011/03/16 18:49
간단한 팁.

Flex3에서 Application의 객체를 접근할 때는 Application.application으로 접근하면 되었다.

하지만 Flex4에서는 Application.application은 Deprecate 되었다.

따라서 다른 방법으로 접근해야 하는데 그 방법은 아래와 같다.

FlexGlobals.topLevelApplication

그럼 기존에 사용하던 방법은 달라졌지만 기능은 그대로 사용할 수 있다.
Posted by nabina
2010/08/05 17:00
옛날부터 Cairngorm Framework만 썼었는데 너무 편하게만 일하는 것 같아서
더 좋은, 색이 다른 Flex용 Framework를 찾아봤다.
그 결과 Mate Framework가 좋을 것 같다는 판단이 났고, 이제 이걸 적용시켜보려 한다~_~

사용자 삽입 이미지

시간이 나면 쉽게 이해가 되게끔 문서를 만들까 한다~_~
Posted by nabina
2010/03/10 12:49

Flex Framework에서 가장 많이 사용되는 컴포넌트 중 하나가 이 Tree일 것이다.
이 Tree에서는 기본적으로 지원하는 Drag&Drop이 있는데 이를 가능케 하는 것이
dragEnabled이라는 프로퍼티이다.

tree.dragEnabled = true

이런 식으로 사용하면 해당 Tree는 기본적으로 드래그가 가능하게 된다.

이럴 때! 몇 가지 문제가 있다. 그 중 해결하려는 하나의 문제를 이 포스트에서 다루려고 한다.

문제
Tree에서 기본으로 지원되는 Drag & Drop에서는 DragSource에 포함되는 format을 "treeItems"라고 사용한다. 이를 변경할 수 있는 Property는 없다.

그러므로 Tree의 기본 Drag & Drop을 사용할 때는 반드시 format이 "treeItems"이기 때문에 Tree1에서는 Drop을 받아야 하고, Tree2에서는 Drop을 받지 말아야 할 때를 알 수 없다.
[ 물론 우회적으로 해결하는 방법이야 많지만.. 확실하게 간단하게 고치진 못 한다. ]

해결방법

사용자 삽입 이미지
addDragData 메소드를 override 하여 사용한다.
API에 다 나와 있는 내용이다. API에 있는데 이런 포스트 써봐야 뭐하나.. 라고 생각이 되지만.. 안 잊어버릴려고 쓴다.
[ 사실 본인은 API를 보고 이 방법을 찾은 게 아니라 Tree 소스를 보다가 알게된 방법인.. 젠장 ]

사용자 삽입 이미지
실제 Tree 소스에 보면 이렇게 되어 있다.

자 우리는 저 부분을 C&P하여 "treeItems" 부분만 고쳐서 사용하면 된다. 예를 들어

override protected function addDragData( ds :Object ) :void {
    ds.addData( this.selectedItems, dragFormat );
}

이런 식으로 사용하면 된다. 그러면 dragEnter 등의 이벤트를 받을 때 그 컴포넌트가 받아야 할 DragSource가 맞는지에 대한 판단을 format으로 해도 문제가 없을 것이다.


결론
Flex Framework를 사용하는데 있어서 가장 중요한 것은 "앎"인 듯 싶다.
그 컴포넌트에 대해서 얼마나 더 잘 아느냐가 Flex를 잘할 수 있는 방법이라 생각된다. 정말 간단하게 해결할 수 있는 문제를 우회적으로 해결하려고 든다면 그건 시간과 노력이 다른 곳으로 소비되는 것이다. 조금만 더 똑똑해져보자. 나도 마찬가지 ㅋㅋㅋ




아참. 글을 다 쓰고 생각 났는데... ListBase를 상속받는 모든 컴포넌트의 Drag & Drop은 이런 식으로 동작한다. 그렇기 때문에 Tree 뿐만 아니라 DataGrid, List, TileList 등의 컴포넌트들의 format을 변경하려면 이와 똑같이 사용하면 된다.

Posted by nabina