• 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 无法点击。
  • 相关阅读:
    chrony时间同步工具
    SyntaxError: missing ; before statement
    SQL 获得两个时间段之间的数据
    EasyUI DataGrid 获得分页信息
    c#里如何实现讲一个字符串数组例如 “112,221”转化成两个字符串数组“112” “221” 中间以逗号隔开
    SQL 将一个表中的所有记录插入到一个临时表中
    SQL查找指定行的记录
    SQL 中的Begin...End语句
    SQL将完整时间字段截取到年月日
    Linux学习之三:档案与文件系统的压缩与打包
  • 原文地址:https://www.cnblogs.com/editor/p/3824025.html
Copyright © 2020-2023  润新知