`

Flex 中 的 IInvalidating 接口

    博客分类:
  • Flex
阅读更多

    小弟学Flex近两年,最近在actionscript 3 论坛看到了有人问“为啥不能通过代码设置TitleWindow的关闭按钮”的问题,让我想把 Flex的IInvalidating 接口实现机制和大家分享一下,不对之处还请 指正、批评。

 

    在flex的帮助里、Essential.ActionScript.3.0 的23章的Event.Render 优化、和LayoutManager.as 的文档说明里面有讲,程序基于Event.Render的好处。LayoutManager的实现机制就是基于Event.Render来实现的。

 

    LayoutManager.as 的说明文档里面有这么说,说,LayoutManager类是Flex的measurement 和 layout 策略,表现为3个阶段 commit 、measurement、layout,上个阶段处理完了才会到下个阶段。commit 阶段是从调用 validateProperties()开始的,一般不用直接调用validateProperties(),调用invalidateProperties()即可,他会将 invalidatePropertiesFlag = tue并最终导致 commitProperties()中代码的执行,以便在下一次的commit 阶段到来时执行,同样validateSize用invalidateSize()、validateDisplayList用invalidateDisplayList()。

 

    在Applications启动的过程中,commitProperties 会从外到里执行一遍,measure 会从里到外执行一遍,然后在 updateDisplayList 从 外到里执行一遍。这样的一个执行顺序,用下面一个就会很好的理解了。

 


 

 

 

    哦,对了,callLater也是基于的 Event.Render,原理和上面差不多。因为flash不会打断当前的代码执行,而去更新屏幕,所以要到当前所有的代码都执行完了之后,如果需要更新屏幕,才会去更新,并发出EnterFrame事件(EnterFrame发出和是否有屏幕更新无关),然后才会去 检查 invalidatePropertiesFlag是否为 true 如果是 则 执行 commitProperties(),其他几个阶段同理。

 

  至于为什么要这样做,这样做的好处,在flex的帮助里、Essential.ActionScript.3.0 的23章的Event.Render 优化、和LayoutManager.as 的文档说明里面有讲,我这里举个简单的例子,

 

   比如,如果你想改变一个text的 color 和 width,你直接去改他的颜色和大小是一个浪费资源的动作,想想如果有很多的text还要改很多次,是不是每次都要执行n下,但是采用这种机制 把他的颜色和大小更改等放在 commitProperties() 和 updateDisplayList()来做,不管你修改多少次,修改的只是数值,最终只执行一次,是不是很 efficient。

 

 

  拿““为啥不能通过代码设置TitleWindow的关闭按钮””为例

 

<mx:TitleWindow id="titleWindow" x="148" y="140" width="250" height="200" layout="absolute" showCloseButton="false">

 因为,_showCloseButton属性是在 Panel 中定义的,在TitleWindow 定义为接口的,它只是一个属性标识。在如上的mxml里写的 showCloseButton = "true" 或 “"false" ,而组件初始化时,会自动经历 3 个阶段,showCloseButton真正设置它的可见是在 layoutChrome()中执行。而 layoutChrome()是在 updateDisplayList()加入的,这是在 Container里面的定义的,至于layoutChrome()的作用或则说那些代码放在里面,看下 Flex 的 Help吧。所以,如果在代码里改 showCloseButton = true 时,需要invalidateDisplayList()一下。

 

 

 

 

  • 大小: 87.2 KB
分享到:
评论

相关推荐

    flex精通 flex接口

    ### Flex精通:Flex接口与应用开发详解 #### Flex简介与应用背景 Flex是一种开源的框架,主要用于构建高质量的Web应用程序,这些程序可以跨浏览器、操作系统和设备流畅运行。Adobe Flex框架利用了Adobe Flash ...

    flex_api (FLEX接口)

    Flex API是SDK中的关键部分,它提供了大量的类和接口,开发者可以利用这些API创建用户界面、处理数据以及与其他系统进行通信。 2. **ActionScript 3.0** Flex API基于ActionScript 3.0,这是一种面向对象的编程...

    FLEX中文帮助flex中文帮助

    flex中文帮助flex中文帮助flex中文帮助flex中文帮助

    FLEX接口的定义和实现

    FLEX接口的定义和实现是ActionScript编程中的关键概念,适用于初学者理解类与接口之间的关系,以及如何通过接口来实现多态性和松耦合。 接口(Interface)在ActionScript中扮演着规范角色,它允许类之间通过相同的...

    flex中文帮助文档

    1. 创建项目:在Flex Builder或Adobe Animate CC中创建新项目,选择目标平台(如Flash Player或Adobe AIR)。 2. 设计界面:使用MXML或ActionScript创建组件,定义界面布局。 3. 编写业务逻辑:在ActionScript中编写...

    flex 官方文档 中文教程

    Flex提供了强大的调试工具,如Flex Builder的集成开发环境(IDE),以及Flex SDK中的命令行编译器,帮助开发者定位和修复问题。 12. **国际化和本地化** Flex支持应用的国际化和本地化,允许开发者创建适应多种...

    06 FlexJava通讯-Flex调用AO接口.docx

    本文档主要介绍了如何在Flex环境中调用AO接口来实现特定的地理空间分析功能,即通过Flex与Java的通信完成缓冲区分析。以下是关键知识点的详细说明: 1. **开发环境**: - **Eclipse J2EE开发环境**:用于Java后端...

    Flex中文帮助 学习Flex的好资料

    10. **最佳实践和设计模式**:学习Flex的过程中,了解和应用设计模式,如MVC(模型-视图-控制器)模式,可以帮助编写出可维护、可扩展的代码。 通过这份"Flex中文帮助"资料,你可以系统地学习Flex的基础概念、编程...

    flex 调用新浪微博接口类库整理

    首先,我们需要在项目中引入相应的微博SDK,这里提到的"MicroBlogLibNew"可能就是这样一个针对Flex的微博接口库。这个库可能包含了封装好的API调用方法,简化了开发者的工作。使用此类库时,你需要仔细阅读其文档或...

    《Flex_help》,Flex中文帮助

    1. **ActionScript**:Flex的基础是ActionScript,这是一种面向对象的脚本语言,类似于JavaScript,但支持类和接口。在Flex应用中,ActionScript用于编写业务逻辑和控制应用行为。你可以通过MXML和ActionScript的...

    FLEX中文教程+实例

    Flex中的数据绑定机制允许将UI组件的属性直接绑定到应用程序的数据模型,当数据模型发生变化时,UI会自动更新,反之亦然,简化了界面和数据间的交互。 六、Flex事件模型 Flex事件模型基于观察者模式,事件是组件间...

    Flex 绘图应用程序接口

    Flex绘图应用程序接口,简称Drawing API,是Adobe Flex Builder 3提供的一套强大的图形绘制工具。这个API允许开发者使用ActionScript在舞台上动态地创建、修改和控制矢量图形,极大地扩展了Flex应用的视觉表现力。它...

    Flex中文帮助文档

    它支持面向对象编程,包括类、继承、接口等特性,是实现Flex应用逻辑的关键。 3. **MXML**:MXML是一种声明式语言,用于描述Flex界面的布局和组件。它与ActionScript相结合,使得界面设计和业务逻辑可以分离,提高...

    flex中文教程.pdf

    ActionScript 3.0则是Flex中的编程语言,提供了面向对象的编程能力,使得开发者可以实现复杂的业务逻辑。 二、Flex SDK与Flex Builder Flex SDK是Flex开发的基础,包含了编译器、库和命令行工具,允许开发者在任何...

    flex中文帮助.rar

    通过“flex中文帮助”压缩包中的资料,初学者可以逐步了解和掌握这些基础知识,通过实例练习来巩固理论知识,为未来深入的Flex开发打下坚实的基础。每个章节都可能涉及上述的一个或多个知识点,通过实践和理解,学习...

    Flex4 中文API

    在Flex4中,ActionScript3(AS3)是主要的编程语言,与Flex SDK紧密集成。AS3是ECMAScript的一个子集,拥有更强大的面向对象特性,如类、接口、包和命名空间,这使得它在构建复杂应用程序时更为高效。Flex4中文API...

    flex中文教程伴有flexbuilder

    这将帮助你理解Flex在RIA开发中的重要性。 2. **ActionScript与MXML**:ActionScript是Flex的主要编程语言,而MXML则是一种用于构建用户界面的标记语言。教程会深入解释这两种语言的语法、特点以及它们如何协同工作...

    Flex中文参考手册

    6. **_states_ 和 _effects_**:Flex中的状态管理允许你根据应用程序的不同阶段或用户行为改变组件的外观和行为。 7. **移动开发**:Flex也可以用于开发移动应用程序,适应iOS和Android平台,使用Adobe AIR技术。 ...

    flex 中文帮助文档

    flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助...

Global site tag (gtag.js) - Google Analytics