簡體   English   中英

在Flex中顯示列表架構

[英]Display List Architecture in Flex

我在面試時被問及Flex中的Display List架構。 后來我搜索了它但沒有用。 任何幫助表示贊賞。

顯示列表就像一棵樹。 想象一下Stage對象是樹的基礎。 想想添加到舞台上的MovieClips和Sprite,它們是樹枝上的樹枝和樹葉。 顯示列表也是AVM2中事件系統的核心。 附加到DisplayList的對象(即,它們本身或其父級,父級父級等最終連接到舞台)可以通過顯示列表“冒泡”事件。

無論如何,這是我解釋它的簡短方法,但您可以從這些鏈接獲得更詳細的信息:

http://www.adobe.com/devnet/flash/quickstart/display_list_programming_as3.html

http://tv.adobe.com/watch/colin-moocks-lost-actionscript-weekend/the-display-list/

似乎問題應該聽起來如下:
當您在mxml代碼中編寫<s:Application> (或任何其他SkinnableContainer / UIComponent )時 - 結果顯示列表的結構是什么?

所以你應該這樣做:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx" applicationComplete="onAppComplete();">

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[

        import flash.display.DisplayObject;
        import flash.display.DisplayObjectContainer;
        import mx.controls.Alert;
        import mx.core.UIComponent;
        import spark.components.SkinnableContainer;
        private function onAppComplete(e:* = null):void {
            trace(parseList(stage));
            //Alert.show(parseList(stage));
        }

        private function parseList(uic:DisplayObjectContainer, prefix:String = '>'):String{
            prefix = prefix || '>';
            var retStr:String = '';
            for (var i:int = 0; i < uic.numChildren; i++ ) {
                retStr += prefix + uic.getChildAt(i).name + '\n';
                if (uic.getChildAt(i) is DisplayObjectContainer) {
                    retStr += parseList(uic.getChildAt(i) as DisplayObjectContainer, prefix + '>');
                }
            }
            return retStr; 
        }

        ]]>
    </fx:Script>
    <s:SkinnableContainer>
        <s:Panel>
            <mx:UIComponent>

            </mx:UIComponent>
        </s:Panel>
    </s:SkinnableContainer>
</s:Application>

(或者可能更復雜)並研究輸出
上面的代碼輸出

>root1
>>NewFile1
>>>ApplicationSkin3
>>>>Group4
>>>>>Group5
>>>>>>SkinnableContainer6
>>>>>>>SkinnableContainerSkin7
>>>>>>>>Group8
>>>>>>>>>Panel9
>>>>>>>>>>PanelSkin10
>>>>>>>>>>>RectangularDropShadow11
>>>>>>>>>>>Group12
>>>>>>>>>>>>Group13
>>>>>>>>>>>>instance36
>>>>>>>>>>>>Group14
>>>>>>>>>>>>>Group15
>>>>>>>>>>>>>>Label16
>>>>>>>>>>>>>>>instance33
>>>>>>>>>>>>>>>instance37
>>>>>>>>>>>>>Group17
>>>>>>>>>>>>>>UIComponent18

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM