Flex 经验笔记二
- 向 Module 传递数据:
好像只能传递些像 整型,字符型等简单类型的数据,
也能传递像 json 这样的 Object 对象,但如果 Object 对象是从层的,其子级数据,好像也读取不到。
function Alert 过,可以传递,但使用只能单参数使用,比如:
public function tstFunc(par1, par2): void;
在 Module 页设置一个 Function 成员变理;
public var sucFunc:Function;
在父级页面中:
module.sucFunc = tstFunc;
再在 Module 页面中执行 : sucFunc(par1, par2);
就会发生错误,但是如果是单个参数的,就正常! - 使用 FlexGlobals.topLevelApplication
var app:Application = FlexGlobals.topLevelApplication as Application;
现在 Application 下有个 public 的方法 funcTest;
var tstFunc = FlexGlobals.topLevelApplication.funcTest as Function; tstFunc();
- 组件 bottom='0' 可使组件置底,可能需要其他的布局设置.
-
HBox与Canvas容器表现不太一样. Hbox addChild后,如果内部组件高度比Hbox大,可能出现界面溢出情况(无法嵌入HBox,内部组件不能设置高度)
但是Canvas好像不会这样。
- 在某些方面,mx组件表现似乎比spark还好点, 比如设置样式等。
- http://www.360doc.com/content/11/0630/16/3294720_130605401.shtml [flex预加载及Application初始化执行过程:]
- flex TextArea 换行处理 String.replace(/\r+/g, '');
- Alert.show 按钮显示 null的问题
必须要在 application 主程序.mxml 处理定义import mx.controls.Alert - flex 中 Array的concat方法,并不能马上形成新的array值
需要赋值.
arr = arr.concat(arr2); - flex 的拷贝或克隆.
第一方式:
var copyObj:Object = ObjectUtil.copy(theObj);
第二种叫做深度拷贝:
var qClassName:String = getQualifiedClassName(object).replace("::", ".");
这种方式在本地是可行的, 但如果通过BlazeDS传到java就会发生错误, 提示 相关类不存在, 运行eclipse console 就会提示 XXXX.xxClassName 不存在。
网上是这么写的,据说比较保险:
var objectType:Class = getDefinitionByName(qClassName) as Class; registerClassAlias(qClassName, objectType); var copier : ByteArray = new ByteArray(); copier.writeObject(object); copier.position = 0; return copier.readObject();
前面两种对于对象,或是对象中仅有包括简单属性的情况,才可能有效果。
如果有个类里,即包括简单的如果整型,字符串这样的类型 ,又包括像数组 Array,甚至是事件的类型 Event, 就需要自己写方法,对类中的各种类型数据进行赋值了。
如果这Array包含的是 这个 类的子集时,就需要使用递归操作了。