也谈Flex组件的生命周期
引子:作于一名由ASP.NET开发转到Flex开发的程序员,最开始适应的过程是相当愉悦和轻松的。由于我早在ASP.NET中习惯了标签式的布局和对应的code behind的编程方式,在Flex中的MXML语言只不过是MXML元素和AS3语法的重新熟悉。但是就像ASP.NET中的标记语言,MXML只不过是AS3的一种封装,归根到底它会被转化成AS3再进行编译,所以,只有了解这门语言的底层运行机制,才有可能真正成为一名优秀的Flex开发人员。由于有过ASP.NET的开发经验,我清楚地认识到像这种以XML标签为基础的组件式的开发方式,只有弄清楚组件的生命周期,才能进行高级开发,才能在遇到复杂情况时有思路去解决,就像做ASP.NET的开发要熟悉页面的生命周期一样。
为此,我刚接触Flex不久就开始研究Flex组件的生命周期。幸运的是,Flex Builder内嵌的帮助文件十分犀利,很容易就查到了Flex组件的的生命周期部分。不幸的是作为没有Flash开发经验的程序员,对里面的某些名词并不是很明白。就这样在没有Flash基础的情况下,我曾经看过很多遍帮助文件,但感觉脑子里一直不是很清楚,对整个生命周期不能形成一个完整的轮廓。最后终于滤清了一些思路,结果还是停在了一个名词上,叫做“Render Event”。里面两次提到了这个词,都是在关键的地方。前些天搞到了《Essential.ActionScript.3.0》的电子版,阅之如醍醐灌顶,不愧为AS3的经典。其中一章就专门讲了Flash运行时的屏幕更新机制,里面当然也提到了Flex帮助文件中所谓的“Render Event”。
先看看Flex帮助文件是怎么说的吧,这里拷贝了原文(可以先略过,只为提供参考):
You call the component’s constructor, as the following code shows:
// Create a Button control.
var b:Button = new Button()
You configure the component by setting its properties, as the following code shows:
// Configure the button control.
b.label = "Submit";
Component setter methods might call the invalidateProperties(), invalidateSize(), or invalidateDisplayList() methods.
You call the addChild() method to add the component to its parent, as the following code shows:
// Add the Button control to the Box container.
boxContainer.addChild(b);
Flex performs the following actions:
Sets the parent property for the component to reference its parent container.
Comput
相关文档:
不久前,Michael Portuesi发表了一篇博文,谈到了Flex开发者需要知道的10件事。文章介绍了每个进入Flex领域的开发者都需要掌握的基本知识与技能。
Michael Portuesi给出的10个条目中,有些是开发者需要了解的简单细节信息;有些则揭示了Flash/ActionScript/Flex与其他开发环境之间的差别。
如果你了解HTML/CSS并熟悉JavaS ......
Adobe Flex开发与传统的Web开发有很多不同之处。正确的理解和利用这些不同之处,可以帮助我们创建更丰富的用户体验,也可以反过来增加网站的可用性以及浏览和更新速度。Flex还提供了大量的组件和技术库来让Web开发更加轻松——它提供的强大工具要远远超过传统Web 2.0中的异步JavaScript和XML(Ajax)应用。此外, ......
使用flex tree 和list实现如下选择用户的效果
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
showCloseButton="true" creationComplete ......
最近遇到了flex 的安全沙箱问题,找了很多资料发现不是都是和我,我的程序需要socket连接,而大多数讲的都是跨域文件读取的。我先把两种方法都总结出来:
跨域文件读取
方法一:在目标服务器上布署crossdomain.xml文件(我用的此方法很管用,放上就没问题了) 需要远程服务根目录定义有crossdomain.xml文件,如下:
<?x ......
本文共两个文件:translate.mxml 和 mapmarking.xml
1、translate.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="librar ......