0

私は最近 Flex を学び始めたばかりです.. 1 つ疑問がありました: 以下はコードです:

メイン.mxml

 <?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" minWidth="955" minHeight="600">

        <s:layout>

            <s:VerticalLayout paddingLeft="10" paddingTop="10"/>
        </s:layout>

        <fx:Style source="Styles.css" />

        <fx:Script>
            <![CDATA[
                import components.NameDisplay;

                import spark.skins.spark.DefaultComplexItemRenderer;
                import spark.skins.spark.DefaultItemRenderer;

                private function rendererFunction(item: Object): ClassFactory
                {
                    if(item is String)
                        return new ClassFactory(NameDisplay);
                    else
                        return new ClassFactory(DefaultComplexItemRenderer);
                }
            ]]>
        </fx:Script>

        <fx:Declarations>

            <s:ArrayList id="employeeList">
                <fx:String>Samuel Ang</fx:String>
                <s:BitmapImage source="images/sang.jpg"/>

                <fx:String>Athena Parker</fx:String>
                <s:BitmapImage source="images/aparker.jpg"/>

                <fx:String>Saul Tucker</fx:String>
                <s:BitmapImage source="images/stucker.jpg"/>

                <fx:String>Alyssa Le</fx:String>
                <s:BitmapImage source="images/ale.jpg"/>
            </s:ArrayList>


        </fx:Declarations>


        <s:Label text="Employee Portal: Employee Directory"
                 styleName="titleHeader"/>

        <s:DataGroup dataProvider="{employeeList}"
                     itemRendererFunction="rendererFunction">

            <s:layout>
                <s:VerticalLayout paddingLeft="15" paddingTop="15"/>
            </s:layout>

        </s:DataGroup>


    </s:Application>

NameDisplay.mxml

 <?xml version="1.0" encoding="utf-8"?>
    <s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                    xmlns:s="library://ns.adobe.com/flex/spark" 
                    xmlns:mx="library://ns.adobe.com/flex/mx" 
                    autoDrawBackground="true">
        <fx:Declarations>
            <!-- Place non-visual elements (e.g., services, value objects) here -->
        </fx:Declarations>

        <s:Label text="{data}"
                 width="74" height="30"
                 backgroundColor="#000000" 
                 color="#FFFFFF" 
                 textAlign="center" 
                 verticalAlign="middle" />

    </s:ItemRenderer>

私の疑問:

1)私の 'rendererFunction' コードはどのように ItemRenderer を最後に返しますか? ClassFactory はどのように ItemRenderer オブジェクトを返すのでしょうか? 私は ClassFactory.as コードをチェックし、newInstance() メソッド (IFactory インターフェイスから実装された) を見たので、ClassFactory はどのようにして自動的に newInstance() メソッドを呼び出しますか (実際には、newInstance() メソッドを介して ItemRenderer オブジェクトを取得していると推測しています)

2) DisplayName.mxml コード内: <s:Label text="{data}"、この「データ」が DataRenderer.as から来ていることがわかりましたが、どこから値を取得するのかわかりませんでした??

3) Flex は Java から開発されたという話を多くの人から聞きましたが、そうですか。はいの場合、Flex ソース コード内に Java ファイルが 1 つも見つからなかったのはなぜですか?

4)現在、Apache は Flex の所有者ですが、なぜ Flex API はまだ「Adobe」と表示されているのですか? (自分自身を知るためにこれを尋ねました)

ばかげたクエリでしたら申し訳ありません。

返信を待っています!

4

1 に答える 1

0

1) 私の 'rendererFunction' コードはどのように ItemRenderer を最後に返しますか? ClassFactory はどのように ItemRenderer オブジェクトを返すのでしょうか?

ここであなたが本当に何を求めているのかわかりませんが、試してみます。私はそれが次のように起こると信じています:

1) DataGroup には、データを表示するために itemRenderer が必要です。

2) DataGroup は、itemRendererFunction が存在するかどうかを確認します。もしそうなら; 関数を呼び出します。関数は ClassFactory を返します

3) DataGroup 内で ClassFactory を使用して、新しいインスタンスを作成します。newInstance() メソッドが呼び出されると仮定します。しかし、私はこれを書くためのコードを見直していません。

4) DataGroup は、新しいレンダラー インスタンスにデータ プロパティを設定します。レンダラーインスタンスもどこかに保存していると思います。

5) レンダラー インスタンスが DataGroup の子として追加されます

一日の終わりに; 質問に対する答えを見つけるには、Flex Framework コードを詳しく調べる必要があります。

2) DisplayName.mxml コード内:

DataGroup は、レンダラーでデータ プロパティを設定します。これは、DataGroup の dataProvider の項目に関連しています。

3) Flex は Java から開発されたという話を多くの人から聞きましたが、そうですか。はいの場合、Flex ソース コード内に Java ファイルが 1 つも見つからなかったのはなぜですか?

Flex コンパイラは Java で構築されています。Flex Framework はすべて ActionScript です。

4) 現在、Apache は Flex の所有者ですが、なぜ Flex API はまだ「Adobe」と表示されているのですか? (自分自身を知るためにこれを尋ねました)

主に後方互換性のためです。Apache Flex SDK には、アドビの名前空間にない新しいクラスが含まれていると思います。

于 2013-08-07T20:31:49.623 に答える