Flex2 help에 있는 내용을 일부 발췌하였습니다.
요즘 Chart renderring에 관심이 있어서 내부적으로 method call하는 방식을 찾다가
발견했네요.
Flex2에서 component를 아래와 같이 생성할 경우 다음의 내부적인 method가 실행됩니다.
var btnXX:Button = new Button();
btnXX.label = "확인";
boxContainer.addChild(btnXX);
1. 상위 컨테이너를 component의 parent로 등록합니다.
2. component의 style 설정을 계산합니다.
3. component에 preinitialize event를 발생시킵니다.
4. component의 createChildren method를 호출합니다.
5. invalidateProperties, invalidateSize와 invalidateDisplayList
method가 9번 항목의 render 이벤트가 수행되는 동안 commitProperties, measure또는
updateDisplayList method에 연결되어 수행됩니다.(??)
-- 사용자가 width, height를 지정하는 경우에는 measure() method를 호출하지 않습니다.
6. component에 initialize event를 발생시킵니다.
이 때, component의 모든 children component가 초기되나, component의 size,
layout이 확정되지는 않습니다. 그러므로 이 event를 이용하여 component가 위치하기
전의 추가적인 작업을 할 수 있습니다.
7. 상위 컨테이너에 childAdd event가 발생합니다.
8. 상위 컨테이너의 initialize event가 발생합니다.
9. render 이벤트가 발생하는 동안 flex는 다음 동작을 수행합니다.
9.1 component의 commitProperties method를 호출합니다.
9.2 component의 measure method를 호출합니다.
9.3 component의 layoutChrome method를 호출합니다.
9.4 component의 updateDisplayList method를 호출합니다.
9.5 component에 updateComplete 이벤트를 발생시킵니다.
10. commitProperties, measure또는 updateDisplayList method가
invalidateProperties, invalidateSize또는 invalidateDisplayList를 호출하면
flex는 추가적인 render 이벤트를 발생시킵니다.
11. render 이벤트가 발생된 이후에 flex는 다음 동작을 수행합니다.
11.1 visible 속성을 true로 설정합니다.
11.2 creationComplete 이벤트를 발생시킵니다. component의 크기와 layout을
설정합니다. 이 이벤트는 component가 생성될 때 한 번 호출됩니다.
11.3 updateComplete 이벤트가 발생합니다.
flex는 layout, position, size 또는 다른 component의 visual 특성값이 변할
때마다 추가적으로 updateComplete 이벤트를 발생시키며, compoent의 display가
갱신됩니다.
12. 다음과 같은 MXML 코드도 동일하게 작동합니다.
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Box><mx:Button label="확인"/></mx:Box>
</mx:Application>
요즘 Chart renderring에 관심이 있어서 내부적으로 method call하는 방식을 찾다가
발견했네요.
Flex2에서 component를 아래와 같이 생성할 경우 다음의 내부적인 method가 실행됩니다.
var btnXX:Button = new Button();
btnXX.label = "확인";
boxContainer.addChild(btnXX);
1. 상위 컨테이너를 component의 parent로 등록합니다.
2. component의 style 설정을 계산합니다.
3. component에 preinitialize event를 발생시킵니다.
4. component의 createChildren method를 호출합니다.
5. invalidateProperties, invalidateSize와 invalidateDisplayList
method가 9번 항목의 render 이벤트가 수행되는 동안 commitProperties, measure또는
updateDisplayList method에 연결되어 수행됩니다.(??)
-- 사용자가 width, height를 지정하는 경우에는 measure() method를 호출하지 않습니다.
6. component에 initialize event를 발생시킵니다.
이 때, component의 모든 children component가 초기되나, component의 size,
layout이 확정되지는 않습니다. 그러므로 이 event를 이용하여 component가 위치하기
전의 추가적인 작업을 할 수 있습니다.
7. 상위 컨테이너에 childAdd event가 발생합니다.
8. 상위 컨테이너의 initialize event가 발생합니다.
9. render 이벤트가 발생하는 동안 flex는 다음 동작을 수행합니다.
9.1 component의 commitProperties method를 호출합니다.
9.2 component의 measure method를 호출합니다.
9.3 component의 layoutChrome method를 호출합니다.
9.4 component의 updateDisplayList method를 호출합니다.
9.5 component에 updateComplete 이벤트를 발생시킵니다.
10. commitProperties, measure또는 updateDisplayList method가
invalidateProperties, invalidateSize또는 invalidateDisplayList를 호출하면
flex는 추가적인 render 이벤트를 발생시킵니다.
11. render 이벤트가 발생된 이후에 flex는 다음 동작을 수행합니다.
11.1 visible 속성을 true로 설정합니다.
11.2 creationComplete 이벤트를 발생시킵니다. component의 크기와 layout을
설정합니다. 이 이벤트는 component가 생성될 때 한 번 호출됩니다.
11.3 updateComplete 이벤트가 발생합니다.
flex는 layout, position, size 또는 다른 component의 visual 특성값이 변할
때마다 추가적으로 updateComplete 이벤트를 발생시키며, compoent의 display가
갱신됩니다.
12. 다음과 같은 MXML 코드도 동일하게 작동합니다.
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Box><mx:Button label="확인"/></mx:Box>
</mx:Application>