私は最近 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」と表示されているのですか? (自分自身を知るためにこれを尋ねました)
ばかげたクエリでしたら申し訳ありません。
返信を待っています!