FLEX笔记

[size=large][b][color=red]Adobe Flex 4 官方资料库:[/color]
[url]http://help.adobe.com/en_US/flex/using/index.html[/url]
[url]http://www.adobe.com/devnet/flex/documentation.html[/url][/b][/size]


Creating Flex projects:
[url]http://livedocs.adobe.com/flex/3/html/help.html?content=projects_3.html[/url]


开发中时,swf文件被浏览器缓存是个很头疼的问题。
[color=red]index.template.html[/color]中加入以下语句,可以确保编译生成的swf文件在浏览器中不会被缓存,每刷新一次浏览器,都会重新load swf文件:
<meta http-equiv="Expires" content="0" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />



[b][size=medium]Flex 4 "Bug" 汇总:[/size][/b]
[b]一[/b] FB的bug:将felx项目交给svn管理后,当重新编译flex代码时,html-template目录下的.svn也会被全盘输出到output folder;最终导致当提交output folder,结果提交到了felx源码目录的html-template目录下!!!:
[url]http://forums.adobe.com/message/55988[/url]
上面链接中说在Flex Builder 3 Beta 3中已解决;可是事实是我遇到这种问题用的是FB4!
暂时采用的临时解决办法:
[b]flex源码目录下的html-template目录,不要纳入svn管理![/b]
[b]二[/b] Vo中有这样一个set方法:
public function set isEnableAsObject(value:Object):void{
if(null!=value && ""!=value) {
this.isEnable = String(value);
}
}
当传进去的参数为0时,居然不进入if代码段!去掉if条件中的""!=value,则可以正常进入!我就纳闷了!0和空串""难道还相等了?如果说是因为空串""是String类型,而该set方法接受的参数value是个Object类型,代码里的这个判断 [color=red]""!=value[/color] 无从比较起,那为什么参数value是1,2,3...都没问题,偏偏只有为0时有问题?FLex这东西在基本类型的处理上,真让人不爽。
改进后的代码:
public function set isEnableAsObject(value:Object):void{
var strValue:String = String(value);
if(null!=strValue && ""!=strValue) {
this.isEnable = strValue;
}
}

[b]三[/b] s:NavigatorContent标签的visible="false"属性居然不起作用!设为false也好,true也罢,s:NavigatorContent永远显示:
New Flash Builder 4 is out but … old bugs remain:
[url]http://eaigurus.com/blog/?p=195[/url]
使用 [color=red][b]TabNavigator..getTabAt(idx).visible = false[/b][/color] 可以设置s:NavigatorContent的visible为false:
http://wuaner.iteye.com/admin/blogs/1062837
[b]四[/b] flex 4 的 s:ComboBox 的一个bug:当combobox中选择某项后,选择该combobox的textinput中的文本,点击后车backspace,清空该textinput中的所有文本,鼠标不要移开该combobox,再次选择刚才选的下拉项,会发现选不上!!!
bug举例 - flex 4.5 官方 combobox使用文档的例子就可以重现这个bug:
[url]http://help.adobe.com/en_US/flex/using/WS70f0d54f063b9b081aac8d1d1247252e4a0-8000.html[/url][img]http://dl.iteye.com/upload/attachment/526646/3852fe55-96dc-3197-915f-983ab573c7b7.png[/img]


[b][size=medium]Flex难点汇总:[/size][/b]
[b]一[/b] 当需要通过多于一次的remote调用去初始化一个控件的时候(如,修改页面的一个combobox下拉;下拉列表的数据来自一次remote调用,取得该修改的记录是另一次remote调用,需要在这两次异步、返回时间不定的remote调用都返回后,再去执行某个function去做该comboox在修改页面的初始化工作。),应该怎么保证这个“初始化”的动作能正确的在所有的remote调用都成功返回后再去做?


使用绝对定位是使 Flex 控件重叠的唯一方法。

在 Flex 模型–视图设计模式下, 用户界面组件代表视图。MXML 语言支持两种用户界面组件类型: 控件和容器。容器是包含控件和其他容器的屏幕的矩形区域。控件是表单元素, 如按钮、文本字段和列表框。


[b]flex与后台server的数据交互方法 :
httpservice, webservice, RemoteObject, socket[/b]
FLEX HTTPService vs RemoteObject:
[url]http://bzhang.iteye.com/blog/310663[/url]


在Flex开发中需要做debug时,需要下载debug版的Flash Player。官方下载版本很多,容易让人糊涂,这里可以参考这篇文章(需FQ):
有史以来关于Flash Player的最详细说明:
[url]http://zengrong.net/post/1188.htm[/url]


XML Namespaces and URI:
[url]http://www.w3schools.com/XML/xml_namespaces.asp[/url]


Flash Builder 4.0 发行说明:
[url]http://kb2.adobe.com/cn/releasenotes/530/cpsid_53079.html[/url]


Flex 3 与 Flex 4 之间的区别:
[url]http://www.adobe.com/cn/devnet/flex/articles/flex3and4_differences_03.html[/url][quote]以下是使用 [b]MXML 2009、Spark 和 Halo[/b] 命名空间创建一个简单的 Flex 4 beta 应用程序的简明示例。
<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">

<mx:DateChooser id="main_calendar" x="20" y="20"/>
<s:Button label="submit" x="220" y="20"/>

</s:Application>
[/quote]


在正式版的flash builder4里,重新定义了halo包的命名空间。从原来的library://ns.adobe.com/flex/halo改为新的library://ns.adobe.com/flex/mx
[url]http://hi.baidu.com/sc304/blog/item/7c8673360d02ec1c91ef39b1.html[/url]


点滴拾遗:
FLEX中让控件显示居中的办法,如:pannel:
[url]http://www.flashbuilderx.com/article.asp?id=37[/url][quote]verticalCenter="0" horizontalCenter="0"[/quote]
获取通过addElement动态添加的textinput的text值:
[url]http://stackoverflow.com/questions/966047/flex-3-dynamic-creation-and-binding-of-textinput[/url]
Build a PopUp Window with Flex:
[url]http://www.riacodes.com/flex/build-a-popup-window-with-flex/[/url]
The Spark TitleWindow container:
[url]http://help.adobe.com/en_US/flex/using/WS6c678f7b363d5da52e8f1ca1124a0430dcf-8000.html[/url]
日期格式化:
[url]http://www.fitchett.me/index.php/development/adobe-flex-format-date-time-inside-of-a-datagrid-too/[/url]
CheckBox selection in DataGrid and List :
[url]http://blogs.adobe.com/aharui/2008/02/checkbox_selection_in_datagrid.html[/url]
Flex 4 TabNavigator组件或TabBar加ViewStack组合组件的选择:
[url]http://www.cnblogs.com/lmjsocool/archive/2011/03/24/lmjsocool.html[/url]
Spark ComboBox control:
[url]http://help.adobe.com/en_US/flex/using/WS70f0d54f063b9b081aac8d1d1247252e4a0-8000.html[/url]
Spark DropDownList control:
[url]http://help.adobe.com/en_US/flex/using/WSc2368ca491e3ff92-59bf082612135c9e688-7fff.html[/url]
datagrid的[b]itemClick(通过它我发现并使用了itemDoubleClick;使用itemDoubleClick的前提是doubleClickEnabled="true"[/b]):
[url]http://polygeek.com/flex/528_DatagridSelectedRow/srcview/index.html[/url][quote]
private function onItemClick( e:ListEvent ):void {
selectedBlogLabel.text = "blog: " + e.itemRenderer.data.blog + "\n";
selectedBlogLabel.text += "URL: " + e.itemRenderer.data.blogURL + "\n";
selectedBlogLabel.text += "By: " + e.itemRenderer.data.blogBy;
}
[/quote]


[size=medium][b]Flex调用父级的变量和方法:[/b][/size]
[b][url]http://ljhzzyx.blog.163.com/blog/static/383803122009013111737406/[/url]
Flex TitleWindow返回值处理:
[url]http://blog.csdn.net/chuangxin/archive/2010/06/30/5705519.aspx[/url][/b]
[url]http://forums.adobe.com/message/2863414[/url][quote]四楼:
In your pop up:
private var _callbackFunction:Function;

public function set callbackFunction( value:Function ):void {
_callbackFunction = value;
}

protected function buttonClickedInpopup():void {
_callbackFunction(null);
}
And in your Main.mxml:
var titleWindowInstance:Popup = Popup(PopUpManager.createPopUp(this, Popup, true));
titleWindowInstance.rowData = arr.getItemAt(event.rowIndex);
titleWindowInstance.callbackFunction = functInMain;
PopUpManager.centerPopUp(titleWindowInstance);
[/quote]通过事件的方式:
[url]http://www.justskins.com/forums/call-a-function-in-131376.html[/url][quote]帖中7楼:
OK, I've got it, if it helps anyone. It's almost what kcell suggested:

In the popup window component:
<mx:Metadata>
[Event(name="foobar", type="flash.events.Event")]
</mx:Metadata>

In the script:
private function handleSaveClick(aEvent:Event):void {
fileName=saveName.text;
dispatchEvent(new Event("foobar", true));
PopUpManager.removePopUp(this);
}

Then the button:
<mx:Button id="saveButton" label="Save" styleName="normalButton"
click="handleSaveClick(event)" />

Then in the parent app:

private var sWin:SaveDialog;

private function saveDialog():void{
sWin =
com.taunton.cyor.SaveDialog(PopUpManager.createPop Up(this,com.taunton.cyor.SaveD
ialog,true));
sWin.fileName = app._stepData0.@title;
sWin.saveName.setFocus();
sWin.addEventListener("foobar", myClickHandler);
}

private function myClickHandler(e:Event):void{
saveRecipe();
}[/quote]


刷新DataGrid:
Collection events and manual change notification:
[url]http://livedocs.adobe.com/flex/3/html/help.html?content=about_dataproviders_5.html[/url]
[url]http://rachaelandtom.info/content/reseting-flex-datagrids-dataprovider-when-using-filterfunction[/url]
[url]http://blog.flexexamples.com/2008/12/16/detecting-when-the-data-provider-of-a-datagrid-control-changes-in-flex/[/url]


与java后台pojo的交互:
The Form Layout Container:
[url]http://learn.adobe.com/wiki/display/Flex/Form[/url]
Using RemoteObject components:
[url]http://livedocs.adobe.com/flex/3/html/help.html?content=datamodels_6.html#157183[/url]
Flex Test Drive: Modify the database:
[url]http://www.adobe.com/devnet/flex/testdrive/articles/2_modify_the_database.html[/url]
Form, FormHeading, and FormItem layout containers:
[url]http://livedocs.adobe.com/flex/3/html/help.html?content=layouts_08.html[/url]
[url]http://hi.baidu.com/11%C5%A3%C5%A3/blog/item/ae74ffefbc75aa3dadafd506.html[/url][quote]在这里我必须强调一点,那就是模块化开发方便之余的问题,也就是[b]前台value object和后台pojo的相互转换,必须是相互[/b]。前台VO类建立时必须指明与后台对应的类:[RemoteClass(alias="这里写清楚后台类路径及名称")]。这就完成了前台转后台时对应。而对于后台转前台的对应呢,[b]必须在主模块中注册:flash.net.registerClassAlias("vo",pojo).[/b][/quote]
[url]http://wangleifire.iteye.com/blog/482999[/url][quote]flex remote 传递 object 参数和接受返回的 dojo 对象,应注意以下问题:
1.as 对象属性必须为 public 的
2.remote 调用的 java 方法时,参数不能作为区别不同方法的依据,也就是说, java 方法不
能重名
3.dojo 对象,必须有无参构造函数
4.as 对象需加 [RemoteClass(alias="cn.com. remote.test.User")][/quote]
remoteObject传参:
1 Explicit parameter passing and parameter binding:
[url]http://livedocs.adobe.com/flex/3/html/help.html?content=data_access_5.html[/url][quote]
<mx:RemoteObject
id="employeeRO"
destination="roDest"
showBusyCursor="true"
fault="Alert.show(event.fault.faultString, 'Error');">
<mx:method name="getList">
<mx:arguments>
<deptId>{dept.selectedItem.data}</deptId>
</mx:arguments>
</mx:method>
</mx:RemoteObject>
[/quote]2 [url]http://stackoverflow.com/questions/4373524/flex-remoteobject-passing-named-parameters[/url][quote]categoryGateway.getCategoryList({orderby:'categoryId', parentCategory:'1'});[/quote]
Handling multiple remote services with RemoteObject :
[url]http://ria-coder.com/blog/handling-multiple-remote-services-with-remoteobject-the-easy-way[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值