Flex 经验笔记二

  1. 向 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);

    就会发生错误,但是如果是单个参数的,就正常!

  2. 使用 FlexGlobals.topLevelApplication
    var app:Application = FlexGlobals.topLevelApplication as Application;

    现在 Application 下有个 public 的方法 funcTest;

    var tstFunc = FlexGlobals.topLevelApplication.funcTest as Function;
    tstFunc();

     

  3. 组件 bottom='0' 可使组件置底,可能需要其他的布局设置.

  4. HBox与Canvas容器表现不太一样. Hbox addChild后,如果内部组件高度比Hbox大,可能出现界面溢出情况(无法嵌入HBox,内部组件不能设置高度)

    但是Canvas好像不会这样。

  5. 在某些方面,mx组件表现似乎比spark还好点, 比如设置样式等。

  6. http://www.360doc.com/content/11/0630/16/3294720_130605401.shtml [flex预加载及Application初始化执行过程:]

  7. flex TextArea 换行处理 String.replace(/\r+/g, '');

  8. Alert.show 按钮显示 null的问题
    必须要在 application 主程序.mxml 处理定义import mx.controls.Alert

  9. flex 中 Array的concat方法,并不能马上形成新的array值

    需要赋值.
    arr = arr.concat(arr2);

  10. 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包含的是 这个 类的子集时,就需要使用递归操作了。

你可能感兴趣的:(Flex)