Flex 数据易犯错误: 常见误用和错误
丢失静默错误(SILENT ERROR)
在某些情形下,绑定操作似乎不能正常工作,此时你可能非常懊恼并且不知道如何进行处理。
由绑定表达式抛出的、或在绑定框架调用的绑定函数中出现的异常和错误可以被静默捕获。因此,你将不会看到运行时异常,而这在 Flash Player 的调试版本中是能够看到的。这时,不仅绑定操作不能工作,而且系统不会显示错误。
为什么错误被静默捕获?
在绑定操作发生之前,实现绑定机制的代码要求满足若干条件。绑定机制将吞没所有错误以便阻止在运行时过程中抛出运行时异常。这是一种很好的机制,因为你不希望在你的应用程序中看到这些(可能的)意外错误。
请查看下面简单绑定范例:
<?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="1024" minHeight="768"
preinitialize="handlePreinitialize()">
<fx:Script>
<![CDATA[
[Bindable]
private var xml:XML =
<users>
<user>
<name>EladElrom</name>
<address>1 Wall Street</address>
</user>
</users>;
protected function handlePreinitialize():void
{
xml = null;
//BindingManager.debugBinding("label.text");
}
]]>
</fx:Script>
<s:Label id="label" text="{xml.user.name}"/>
</s:Application>
我已经添加一个与Label组件绑定的xml变量。上面代码本可以支持执行。然而,我在组件的预初始化期间已经将该xml变量设置为null。在组件初始化序列开始时系统会下发该事件,这样该xml对象将没有name 属性。如果你运行该应用程序,你将会发现绑定操作不能执行并且错误将被系统静默捕获。
调试绑定
尽管系统可以静默地捕获错误,但你仍然可以通过某些手段了解应用程序的运行过程。 利用 BindingManager.as 和 Binding.as 代码进行调试不是轻而易举的事,因为你需要下载整
相关文档:
最近在研究flex技术,flex和flash的交互,flex和Java的通信。下边是一个flex控制swf文件中元件的范例,刚接触flex,如有不对的地方,大家多提意见。
mxml文件:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
&n ......
1.java
Java代码
package com;
public class LoginDemo {
public String validate(String username,String password){
&nb ......
拖动水平滚动条来改变图片大小。
<?xml version="1.0"?>
<!--
Simple example to demonstrate the HSlider control.
水平拖动条。
MyShareBook.cn 翻译   ......
<?xml version="1.0"?>
<!-- Simple example to demonstrate the ProgressBar control. -->
<!--
如何使用Flex ProgressBar
MyShareBook.cn 翻译
-->
<mx:Applic ......
Flex里面,DataGrid的column的width属性不接受百分比,只接受一个具体的像素值,所以,如果想按照比例来设置列宽需要费些周折。Google了一下,有两种方法可以做到: 第一种方法,不要设置width为百分比,而设置为一个小数,所有列的小数值的和必须为1。 <mx:DataGrid width="100%" height="100%" ......