`

FLEX笔记

    博客分类:
  • FLEX
阅读更多
Adobe Flex 4 官方资料库:
http://help.adobe.com/en_US/flex/using/index.html
http://www.adobe.com/devnet/flex/documentation.html



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


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




Flex 4 "Bug" 汇总:
FB的bug:将felx项目交给svn管理后,当重新编译flex代码时,html-template目录下的.svn也会被全盘输出到output folder;最终导致当提交output folder,结果提交到了felx源码目录的html-template目录下!!!:
http://forums.adobe.com/message/55988
上面链接中说在Flex Builder 3 Beta 3中已解决;可是事实是我遇到这种问题用的是FB4!
暂时采用的临时解决办法:
flex源码目录下的html-template目录,不要纳入svn管理!
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类型,代码里的这个判断 ""!=value 无从比较起,那为什么参数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;
		}
	}

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



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




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

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





flex与后台server的数据交互方法 :
httpservice, webservice, RemoteObject, socket

FLEX HTTPService vs RemoteObject:
http://bzhang.iteye.com/blog/310663



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


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


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


Flex 3 与 Flex 4 之间的区别:
http://www.adobe.com/cn/devnet/flex/articles/flex3and4_differences_03.html
引用
以下是使用 MXML 2009、Spark 和 Halo 命名空间创建一个简单的 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>



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





点滴拾遗:
FLEX中让控件显示居中的办法,如:pannel:
http://www.flashbuilderx.com/article.asp?id=37
引用
verticalCenter="0" horizontalCenter="0"

获取通过addElement动态添加的textinput的text值:
http://stackoverflow.com/questions/966047/flex-3-dynamic-creation-and-binding-of-textinput
Build a PopUp Window with Flex:
http://www.riacodes.com/flex/build-a-popup-window-with-flex/
The Spark TitleWindow container:
http://help.adobe.com/en_US/flex/using/WS6c678f7b363d5da52e8f1ca1124a0430dcf-8000.html
日期格式化:
http://www.fitchett.me/index.php/development/adobe-flex-format-date-time-inside-of-a-datagrid-too/
CheckBox selection in DataGrid and List :
http://blogs.adobe.com/aharui/2008/02/checkbox_selection_in_datagrid.html
Flex 4 TabNavigator组件或TabBar加ViewStack组合组件的选择:
http://www.cnblogs.com/lmjsocool/archive/2011/03/24/lmjsocool.html
Spark ComboBox control:
http://help.adobe.com/en_US/flex/using/WS70f0d54f063b9b081aac8d1d1247252e4a0-8000.html
Spark DropDownList control:
http://help.adobe.com/en_US/flex/using/WSc2368ca491e3ff92-59bf082612135c9e688-7fff.html
datagrid的itemClick(通过它我发现并使用了itemDoubleClick;使用itemDoubleClick的前提是doubleClickEnabled="true"):
http://polygeek.com/flex/528_DatagridSelectedRow/srcview/index.html
引用
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;
        }




Flex调用父级的变量和方法:
http://ljhzzyx.blog.163.com/blog/static/383803122009013111737406/
Flex TitleWindow返回值处理:
http://blog.csdn.net/chuangxin/archive/2010/06/30/5705519.aspx

http://forums.adobe.com/message/2863414
引用
四楼:
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);  
通过事件的方式:
http://www.justskins.com/forums/call-a-function-in-131376.html
引用
帖中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();
}




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



与java后台pojo的交互:
The Form Layout Container:
http://learn.adobe.com/wiki/display/Flex/Form
Using RemoteObject components:
http://livedocs.adobe.com/flex/3/html/help.html?content=datamodels_6.html#157183
Flex Test Drive: Modify the database:
http://www.adobe.com/devnet/flex/testdrive/articles/2_modify_the_database.html
Form, FormHeading, and FormItem layout containers:
http://livedocs.adobe.com/flex/3/html/help.html?content=layouts_08.html
http://hi.baidu.com/11%C5%A3%C5%A3/blog/item/ae74ffefbc75aa3dadafd506.html
引用
在这里我必须强调一点,那就是模块化开发方便之余的问题,也就是前台value object和后台pojo的相互转换,必须是相互。前台VO类建立时必须指明与后台对应的类:[RemoteClass(alias="这里写清楚后台类路径及名称")]。这就完成了前台转后台时对应。而对于后台转前台的对应呢,必须在主模块中注册:flash.net.registerClassAlias("vo",pojo).

http://wangleifire.iteye.com/blog/482999
引用
flex remote 传递 object 参数和接受返回的 dojo 对象,应注意以下问题:
1.as 对象属性必须为 public 的
2.remote 调用的 java 方法时,参数不能作为区别不同方法的依据,也就是说, java 方法不
能重名
3.dojo 对象,必须有无参构造函数
4.as 对象需加 [RemoteClass(alias="cn.com. remote.test.User")]

remoteObject传参:
1 Explicit parameter passing and parameter binding:
http://livedocs.adobe.com/flex/3/html/help.html?content=data_access_5.html
引用
<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>
2 http://stackoverflow.com/questions/4373524/flex-remoteobject-passing-named-parameters
引用
categoryGateway.getCategoryList({orderby:'categoryId', parentCategory:'1'});

Handling multiple remote services with RemoteObject :
http://ria-coder.com/blog/handling-multiple-remote-services-with-remoteobject-the-easy-way


  • 大小: 2.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics