1. ActionScript语言提供隐式setter和getter。隐式的setter和getter看起来像方法,但对外是属性。实践证明setter和getter对解决频繁转换类型问题是很好的解决方法。
2. 图片绑定的三种方法:
<?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:HorizontalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
[Bindable] private var imgUrl:String = "Cafeteria";
]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<mx:Image source="{'assets/images/'+ imgUrl +'.jpg'}"/>
<mx:Image source="assets/images/{imgUrl}.jpg"/>
<s:BitmapImage source="@Embed('assets/images/Cafeteria.jpg')"/>
</s:Application>
在这里需要注意如果使用第二种方式绑定的话只能使用<mx:Image>组件,<s:BitmapImage>组件不支持。
3. 在mxml中进行特效的一个小示例:
<s:transitions>
<s:Transition>
<s:CrossFade
target="{newsItem}"
duration="1000" />
</s:Transition>
</s:transitions>
<s:Group id="newsItem" width="255">
<s:BitmapImage source="@Embed('assets/images/Cafeteria.jpg')"
visible="true" visible.page2="false"/>
<s:BitmapImage source="@Embed('assets/images/seminar.jpg')"
visible="false" visible.page2="true"/>
</s:Group>
4. effect特效简单介绍:
Transition类中的几个属性:
fromState 指定在进行过渡时的原视图状态
toState 指定在进行过渡时的目标视图状态
effect 在进行过渡时所采用的Effect对象.可以使用<mx:Parallel>和<mx:Sequence>标签来定义多个效果。
<mx:Parallel>标签指定效果同时发生, 而<mx:Sequence>标签指定效果按顺序依次发生。两者可以嵌套使用从
而生成更复杂的动画。 可以利用这两个标签中的targets属性把效果应用于同个状态中的多个组件。
将formState或toState设置为星号(*)表示任意的视图状态
5. DataGrid 组件有默认的排序行为
6. flex中传值的几种方式:
(1) 通过自定义事件传值;
(2) 在使用popupManager弹出窗口时进行传参,如:
var win:ConfirmScreen = ConfirmScreen(PopUpManager.createPopUp(this, ConfirmScreen, true));
win.prod = prod; //要传递的参数
7. 有时候我们指定<mx:Model>标签的source属性并且指向外部XML文件,将XML嵌入到一个SWF文件上。这是一种不好的做法,因为XML被编译紧了SWF文件中,导致了文件尺寸变大。而且,XML也无法立即更新,每当数据改变时,你都得重新编译SWF。这对于会改变的数据或者大型数据来说很不实际。实践中更好的方法是使用HTTPService类在运行时加载XML.
8.理解安全问题
Flex遵守Flash Player的安全沙箱限制,这意味这Flash Player会阻止一个域中的应用程序加载另一个域中的数据。解决办法就是实现跨域访问,下面是一个跨域策略文件的例子,定义了一个crossdomain.xml,位于SWF文件调用的Web服务器的根目录下,指定了哪些域能通过Flash Player访问其中的资源。
<cross-domain-policy>
<allow-access-from domain=”*”/>
<cross-domain-policy/>
有关更多关于Flash Player沙箱限制的更多信息可在Adobe官方看到:
www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_14213
9.使用一个常规的Array对象作为数据提供者是不对的。它虽然能在首次使用时将数据填入组件,但Array中的数据发生更改是组件不会更新。 最理想的就是使用ArrayCollection.当修改用于数据绑定的ArrayCollection时,视觉显示会随着底层数据的更改而自动更新。
10.ArrayCollection自带了排序功能。如下演示代码:
var prodSort:Sort = new Sort();
var sortField1:SortField = new SortField(“catId”); //要排序的属性
var sortField2:SortField = new SortField(“prodName”); //要排序的属性
prodSort.fields = new Array(sortField1, sortField2);
myArrayCollection.sort = prodSort;
myArrayCollection.refresh();
11.一般来说,当一个组件已经实例化并已正确地位于应用程序中时,会分发creationComplete事件。Application对象的子元素(Application容器中的所有组件)都已广播了各自的createComplete事件以后,Application对象才会分发自身的creationComplete事件。