Flex 经验笔记一
- 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 中的对象...
- 有些组件在 Module 页面,无法正常显示,这有可能是需要其他的一些配置,但有可能你直接把这个配置写在本页面(比如: fx:Declarations 内), 还是无法显示,但又找不到错误提示,这时你可以把配置写在 application 页面的 '定义' 标签内试 (fx:Declarations)。
- 要记得把 Module 添加到 : 项目 - 属性 - Flex模块中去,不然会无法显示!
- 解决 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;
-
ArrayCollection 的 filterFunction:
用于批量修改 ArrayCollection 中键所对应的值:arrayCollection.filterFunction = filterFunction; arrayCollection.refresh(); private function filterFunction(item:Object):Boolean { item['field'] = newValue; return true; }
-
有可能在 项目 - 属性 - 构建路径 - 源路径, 无法添加文件夹 (不懂是不是破解版的问题):
这时可以通过在项目根目录下的 .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>
-
用 PopUpManager 拖动 TitleWindow 如果 TitleWindow 内嵌套 iframe,如果TitleWindow 是spark 类的,拖动就会发生相对位移;
用 mx 类型的TitleWindow 即可;
- Module 所在的 父 Application 页面配置了 <s:Scroller 滚动标签,如果 Module 根标签 设置 height='100%', 滚动条不显示,应该去掉,或是设置固定高度值。
- 界面容器组件随窗口改变而改变,在界面初始化时添加代码:
this.systemManager.addEventListener(Event.RESIZE, winResizeHandler); private function winResizeHandler(event:Event):void { stage.scaleMode = StageScaleMode.NO_BORDER; //... }
- 如果要使用 无标题的 Panel 可以使用 Canvas
Canvas 以及 XBox 可以 addChild Module,XGroup 好像不行。
Label 也可以添加 Module ,但 Module 内的 Form 无法点击。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端