Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- scaleform4
- autodesk
- 플래시
- as3
- 애드온
- 수학정석
- 스케일폼
- as3.0
- flash
- MMOKit
- 형변환
- 강좌
- addChild
- 샌프란시스코
- as2
- flash player 10
- flash cs3
- Document Class
- 클릭
- GDC
- ApplicationDomain
- Chart
- scaleform
- CLIK
- KGC 2013
- DataBinding
- 태그클라우드
- 집합의 연산
- watch
- scaleform3
Archives
- Today
- Total
scaleform.minarto.com
CLIK 10 - TreeViewItemRenderer, TreeViewDataProvider 본문
1. TreeViewItemRenderer
Window 편을 마지막으로 CLIK 편을 마치려고 했는데, 트리 메뉴를 쓸 일이 많아지더군요...
트리 메뉴야 샘플도 있고, 코드도 ScrollingList 를 상속받아 몇줄 되지 않지만서도 문제는 아이템 렌더러 쪽입니다.
ListItemRenderer 는 버튼을 상속받은 거의 그대로이기에 별로 볼 것도 없고 쉽지만 TreeViewItemRenderer 가 꽤나 복잡한 편입니다
그런데 공식 component 가 아닌 샘플로만 존재하기 때문에 설명을 찾을 수도 없습니다.
쓰이는 빈도 수를 생각할 때, 이것도 공식 콤포넌트로 만들어줬으면 합니다.
어쨌든 한번 파보죠...
TreeViewItemRenderer > ListItemRenderer (flex) > Button (flex) > UIComponent (flex)
스테이지 상에 올려놓는 무비클립 형태가 아닌 트리 콤포넌트에 연결해놓는 형태이기 때문에 Inspectable 속성은 없습니다.
[public]
1. iconItemLineStraight:String = "TreeItemLine_Straight"
폴더(트리)가 열렸을 때, 밑으로 내려오는 선에 연결할 클래스의 identifier 명입니다
2. iconFolderRoot:String = "TreeFolder_Root"
루트(최상위) 아이템에 연결할 아이콘 클래스의 identifier 명입니다
3. iconFolderLeaf:String = "TreeFolder_Leaf"
아이템에 연결할 아이콘 클래스의 identifier 명입니다
4. iconItemLineMiddle:String = "TreeItemLine_Middle"
폴더가 열렸을 때, 밑으로 내려오는 선에서 중간에 옆으로 연결되는 (ㅏ) 자 모양에 연결할 클래스의 identifier 명입니다
5. iconItemLineBottom:String = "TreeItemLine_Bottom"
폴더가 열렸을 때, 밑으로 내려오는 선의 맨 밑에 연결되는 (ㄴ) 자 모양에 연결할 클래스의 identifier 명입니다
6. iconItemAlone:String = "TreeItem_Alone"
폴더가 열리고 닫히는 것(+ / -)을 보여주는 아이콘에 연결할 클래스의 identifier 명입니다
아이템에 연결할 아이콘 클래스의 identifier 명입니다
4. iconItemLineMiddle:String = "TreeItemLine_Middle"
폴더가 열렸을 때, 밑으로 내려오는 선에서 중간에 옆으로 연결되는 (ㅏ) 자 모양에 연결할 클래스의 identifier 명입니다
5. iconItemLineBottom:String = "TreeItemLine_Bottom"
폴더가 열렸을 때, 밑으로 내려오는 선의 맨 밑에 연결되는 (ㄴ) 자 모양에 연결할 클래스의 identifier 명입니다
6. iconItemAlone:String = "TreeItem_Alone"
폴더가 열리고 닫히는 것(+ / -)을 보여주는 아이콘에 연결할 클래스의 identifier 명입니다
7. iconItemTop:String = "TreeItem_Top"
폴더가 열리고 닫히는 것(+ / -)을 보여주는 아이콘 중 가장 상단에 연결할 클래스의 identifier 명입니다
8. iconItemMiddle:String = "TreeItem_Middle"
폴더가 열리고 닫히는 것(+ / -)을 보여주는 아이콘 중 중단에 연결할 클래스의 identifier 명입니다
9. iconItemBottom:String = "TreeItem_Bottom"
폴더가 열리고 닫히는 것(+ / -)을 보여주는 아이콘 중 하단에 연결할 클래스의 identifier 명입니다
10. iconSize:Number = 20
이름 그대로 아이콘 사이즈입니다
11. textMargin:Number = 3
아이콘과 텍스트라벨의 간격입니다
12. function setData(data:Object):Void
상위 클래스인 ListItemRenderer 에서는 setListData(index:Number, label:String, selected:Boolean):Void 를 통해서 텍스트 라벨에 텍스트를 쓰지만 이녀석은 setData 에서 씁니다....
흠... 왜그럴까요
2. TreeViewDataProvider
이번에는 옵션 설명은 아닙니다.
트리메뉴에서 사용하는 독특한 데이터 컨테이너에 대해서입니다.
데모에 있는 샘플 데이터를 볼까요...
var root:Object =
{
label: "System",
nodes:[
{label: "Applications",
nodes:[
{label: "CGStudio",
nodes:[
{label: "Data"},
{label: "Samples"},
{label: "Config"}
]
},
{label: "Money Manager"},
{label: "Role Call v6"},
{label: "Inventionista"},
{label: "Super Draft",
nodes:[
{label: "Templates"},
{label: "Binaries"},
{label: "Local"}
]
}
]
},
{label: "Users",
nodes:[
{label: "ldicaprio",
nodes:[
{label: "Films"},
{label: "Contacts"}
]
},
{label: "kwinslet",
nodes:[
{label: "Necklaces"},
{label: "Awards"}
]
}
]
},
{label: "Media",
nodes:[
{label: "Titanic",
nodes:[
{label: "Photos"},
{label: "Clips"},
{label: "Storyboards"}
]
},
{label: "Script #443"},
{label: "Script #12"},
{label: "Script #8239"},
{label: "Revolutionary Road",
nodes:[
{label: "Photos"},
{label: "Clips"},
{label: "Storyboards"}
]
}
]
}
]
};
var dp:TreeViewDataProvider = new TreeViewDataProvider(root);
만들려면 완전 json처럼 만들던가 말이죠... json 비슷하게만 해놓은건 뭔지...
이런 형태로 해야 클라가 만들기 편할 것으로 생각했나 봅니다.
json 에 대해서는...
http://www.ibm.com/developerworks/kr/library/wa-ajaxintro10/
http://www.json.org/json-ko.html
이 글을 한번 읽어보시고요...
암튼 이렇게 json 형태로 만들어주면 TreeViewDataProvider 에서 다시 그걸 재귀함수가 돌면서 가공해서 사용합니다