Flex 经验笔记一

  1. Module页面嵌套子Module页面
    直接用标签嵌入是不行的,无法显示出来,需要用到 ModuleManager 使用ModuleInfo 的 addEventListener 判断当子Module 载入完成后,才可以绑定父 Module 的 ModuleLoader 标签。
    private var info:IModuleInfo;
    private function init(event:FlexEvent):void {
        info = ModuleManager.getModule("xxx/childModule.swf");
        info.addEventListener(ModuleEvent.READY, moduleHandler);
        info.load();
    }
    
    private function moduleHandler(event:ModuleEvent):void {
        pagelbl.addChildAt(event.module.factory.create() as DisplayObject, 0);
    }

    要获取这个 子Module 中的方法对象:

    var _module:Object = pagelbl.getChildAt(0);

    假如这个 子Module 中有这些个的方法,成员: (假设 childModule.mxml 中 嵌入一个 childModule.cs)

    public var xxxId:String = '0';
    public var yyyId:String = '0';
    
    public var executeSuccess:Function;
    [Bindable]
    public var shapeObj:Object = {};
    
    public function formdatas(json:Object):void
    {
        //...
    }

    那么就用 _module.xxxId, _module.yyyId 就可以访问 childModule 中的对象...

  2. 有些组件在 Module 页面,无法正常显示,这有可能是需要其他的一些配置,但有可能你直接把这个配置写在本页面(比如: fx:Declarations 内), 还是无法显示,但又找不到错误提示,这时你可以把配置写在 application 页面的 '定义' 标签内试 (fx:Declarations)。

  3. 要记得把 Module 添加到 : 项目 - 属性 - Flex模块中去,不然会无法显示!

  4. 解决 Module 页面调用 Alert.show [TitleWindow] 弹窗透明问题:
    要在所在的 Application 父页面 Script 全局添加 :
    import mx.managers.PopUpManager;
    private var pop:PopUpManager=new PopUpManager();

    调用的Alert.show 尽量前面四个参数都写出来:

    Alert.show(“提示信息”,”标题”, Alert.OK, this);

    当Alert.show 是在异步后调用,或是在回调方法中调用的:
    则需要在异步调用,或是在回调方法前面定义:

    var that:Sprite = this;

    然后用 that 代替 this;

  5. ArrayCollection 的 filterFunction:
    用于批量修改 ArrayCollection 中键所对应的值:

    arrayCollection.filterFunction = filterFunction;
    arrayCollection.refresh();
    
    private function filterFunction(item:Object):Boolean
    {
        item['field'] = newValue;
        return true;
    }

     

  6. 有可能在 项目 - 属性 - 构建路径 - 源路径, 无法添加文件夹 (不懂是不是破解版的问题):
    这时可以通过在项目根目录下的 .project 以及 .actionScriptProperties 文件内的某位置添加相应的配置即可.
    .project:

    <linkedResources>
            <link>
                <name>[source path] src</name>
                <type>2</type>
                <location>X:/xxx/develops/flex/projectName/src</location>
            </link>

    .actionScriptProperties, compile标签下:

    <compilerSourcePath>
          <compilerSourcePathEntry kind="1" linkType="1" path="E:/xxx/develops/flex/projectName/src"/>
        </compilerSourcePath>

     

  7. 用 PopUpManager 拖动 TitleWindow 如果 TitleWindow 内嵌套 iframe,如果TitleWindow 是spark 类的,拖动就会发生相对位移;

    用 mx 类型的TitleWindow 即可;

  8. Module 所在的 父 Application 页面配置了 <s:Scroller 滚动标签,如果 Module 根标签 设置 height='100%', 滚动条不显示,应该去掉,或是设置固定高度值。

  9. 界面容器组件随窗口改变而改变,在界面初始化时添加代码:
    this.systemManager.addEventListener(Event.RESIZE, winResizeHandler);
    
    private function winResizeHandler(event:Event):void {
        stage.scaleMode = StageScaleMode.NO_BORDER;
        //...
    }

     

  10. 如果要使用 无标题的 Panel 可以使用 Canvas 
    Canvas 以及 XBox 可以 addChild Module,XGroup 好像不行。
    Label 也可以添加 Module ,但 Module 内的 Form 无法点击。

你可能感兴趣的:(Flex)