这些天我刚开始学习Flex。我只是有一个疑问:下面是代码:
主.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>
名称显示.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 文件?
4)现在,Apache 是 Flex 的所有者,那么为什么 Flex API 仍然显示为“Adobe”?(问这个只是为了了解自己)
对不起,如果他们是愚蠢的查询!
等待回复!