Flex应用程序启动详解_jexchen博客_65b95065的博客-程序员秘密

技术标签: application  null  flex  Flex3 & As3  框架  actionscript  flash  

      编写一个简单的Flex应用程序并不复杂,就算你从来没接触过Flex程序设计,照着帮助的实例步骤,不需花多长时间也能做出一个漂亮简捷的小程序出来。不过,随着对Flex程序编写的深入,会越来越觉得,其实要编写一个好的Flex应用程序并不简单,涉及到各个方面的知识,需要对Flex应用程序的架构、事件机制的处理、设计与程序的结合等等各个方面均要有所掌握。

      接下来我会写一个系列文章,对Flex应用程序编写在上述方面所需掌握的知识作一个梳理,希望对大家有所帮助…

这第一部分的内容从Flex应用程序的启动与运行讲起。另外,Flex应用程序总的来说是以事件驱动的程序,因此,大家在深入学习Flex的各个方面知识的时候,应该随时以事件驱动的观点来进行思考。

      大家都知道,我们在编写Flex应用程序时,通常是以<mx:Application>标签作为开头,实际上,Flex应用程序在启动运行的时候并不是直接从Application开始运行,在这之前还有一部分悄悄的先运行了,正如大家所看到的,当我们运行编写好的Flex应用程序时,尽管我们没有编写任何与启动进度载入条相关的代码,但无一例外的,应用程序均会为我们自动加上这一部分。因此才有我们看到的如下图所示的标准的Flex loading载入条(在下一篇文章中,我们将一起来改变这千篇一律的载入条,创建自定义的loading效果)。

      loading

 

      通常我们所说的Flex应用程序,本质上来说是基于Flex框架、采用ActionScript 3.0编写的Flash应用程序,从这一点来说,它和普通的Flash应用程序没有任何差别。相对来说,传统的使用Flash IDE(如Flash CS3)创建Flash程序时更多的基于“时间线”(Timeline)及“帧”(Frame)的概念,更易于设计师理解;而基于Flex框架来创建的Flash应用程序更多是强调程序性,很少提及“时间线”与“帧”的概念,更易于程序员理解。其实Flex应用程序一样也有时间线,只是这部分由Flex框架隐藏起来了,通常不为大家所熟悉,在默认创建Flex程序时,这一切Flex已帮我们完成了,但了解这部分内容更有助于大家对Flex应用程序的启动有更深刻的认识,以便能对程序更灵活的控制与发挥~~

     application

      我们来看看上面这幅示意图,Flex应用程序共由两帧组成,第1帧为preloader部分,第2帧为主应用程序部分,此两部分由Flex应用程序的根SystemManager统管,SystemManager是flash.display.MovieClip的子类,影片剪辑(movie clip)支持帧。由于swf属于一种渐进式(progressive)下载的格式,正是由于swf格式这个特性,Flash Player并不需要等待整个程序下载完成便可直接访问已载入帧的内容,因此第一帧通常用来作为应用程序载入时的loading画面显示,一般来说,第一帧包含的内容应该尽可能的少(在第一帧中尽量不要含有Flex框架的组件),以便能很快的下载并立即显示;第二帧才是主应用程序真正的内容,一旦SystemManager实例进入到第二帧后,即开始内部主应用程序运行的生命周期(life cycle),也就是进入我们最为熟悉的<mx:Application>运行的部分(SystemManger实例有一application的属性,在第1帧时,此属性为null,当进入到第2帧时,该属性才指向真正的主程序application实例)

注:帧是时间线的一个基本单元,如PAL电视制式,每秒25帧;而电影通常为每秒24帧,其实和我们这里讲的Flash中的帧类似的概念

      记住我们开始所说的,Flex应用程序总的来说是以事件驱动的程序

      在程序进入第2帧,主程序application开始运行后,便会相应的触发相应的一系列事件,按事件发生的先后顺序依次来介绍:

      preinitialize

      应用程序application已实例化,但此时还未创建任何相关的孩子组件(child component)

      initialize

      此时,创建了相应的孩子组件,但还未对这些子组件进行布局

      creationComplete

      应用程序application完成全部实例化,并完成所有子组件的布局

      apllicationComplete

      上面三处事件的完成,表明application内部启动的整个进程完成,接下来便会通知SystemManager派发applicationComplete事件。此时,启动程序启动完成并准备运行。

      运行下面这个小程序,再次理解这几次事件,注意:由于在preinitialize事件产生时,此时还未创建任何子组件,故在此事件的处理函数中,不能直接将相应显示的字符串赋给TextArea组件显示。

点击运行程序(右键选择view source可查看源码)

 

出自:http://www.jexchen.com

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/accp_fangjian/article/details/3858640

智能推荐

IT研发/开发流程规范效能的思考总结_Young丶的博客-程序员秘密

通过优化研发过程,并有明确的数据量化,证明研发对业务的价值。

由freemarker毫秒级时间谈固定日期格式_月光日光的博客-程序员秘密

freemarker中毫秒级日期的正确表示。java和c#中日期的毫秒表示是不同的。c#中的毫秒级用f表示,java中用S表示。

黑马程序员--java基础--接口_Navan_的博客-程序员秘密

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------接口:初期理解,可以认为是一个特殊的抽象类当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。class用于定义类interface 用于定义接口。接口定义时,格式特点:1,接口中常见定义:常量,抽象方法。

排列组合详解_排列组合csdn_代码乌龟的博客-程序员秘密

在笔试题中看到的一个选择题 用1*3的瓷砖密铺3*20的地板有几种方式? 排列组合问题 排列和组合问题,其实是两种问题,区分它们的原则是是否需要考虑顺序的不同。排列问题,考虑顺序;组合问题,不考虑顺序。以下4个问题,哪个是排列,哪个是组合? Q1: 一套书共有...

python学习第三天_独听钟声晚的博客-程序员秘密

1.列表:可以存储任意数据类型的集合1).索引2).切片4).连接5).成员操作符6).迭代7).列表嵌套列表8).索引9).切片10).练习假定有下面的列表:names = [‘fentiao’,‘fendai’,‘fensi’,‘apple’]输出结果为: ‘I have fentiao, fendai, fensi and apple.’11...

linux中ssh可以登录sftp不能登录解决办法 Failed to connect SFTP channel._sftp chanel failed_疯子@123的博客-程序员秘密

1 用mobaXterm不能连接sftp上传文件2 用jenkins 不能登录1 修改文件系统vim /etc/ssh/sshd_configSubsystem sftp /usr/libexec/openssh/sftp-server改为Subsystem sftp internal-sftp2 重启sshd服务service sshd res...

随便推点

内存泄漏试试AScan_mseaspring的博客-程序员秘密

我用最多的排查c程序的内存问题的工具就是valgrind了,但是它这个工具有时候不是太好用,比如说,速度很慢,平时运行一次1s的程序,用valgrind排查可能要10s左右,还有没有好用...

庆祝博客升千,经典文献大奉献_邹宇华的博客-程序员秘密

 博客点击量昨天突破一千啦,感谢各位朋友的关注和支持,特把我下载收藏的经典编程文献资源共享出来!以后点击量每增加一千,就共享文献资源一批。这是初定计划,如果承蒙大家积极支持,共享的文献数量会逐步增加并逐渐实现免费赠送。谢谢!今天的共享书目是:1--Addison.Wesley.Effective.Stl.50.Specific.Ways.To.Improve.Your.Use.Of.Stl.pdf

笔试算法题_weixin_30675967的博客-程序员秘密

转自:http://www.cnblogs.com/xwdreamer/archive/2011/12/13/2296910.html1.把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14/ \ / \4 8 12 16转换成双向链表4=6=8=10=12=14...

如何使用python中读取csv数据文件?读取csv文件的几种方法_python读取csv文件_data_amateur的博客-程序员秘密

1.第一种方法,使用csv库,打开csv文件,然后逐行读取文件内容import csvfilename = 'abc.csv'with open(filename) as f: reader = csv.reader(f) header_row = next(reader) highs = [] for row in reader: print(highs)这里header_row读取的是csv文件中的第一行,highs存储所有的数据行

Spring学习笔记_weixin_34220963的博客-程序员秘密

为什么80%的码农都做不了架构师?&gt;&gt;&gt; ...

C++经典对话上关于模式的两篇好文章_c++经典雇员问题_lyskyly的博客-程序员秘密

      偶然在网上找到C++经典对话系列这本好书,一本非常不错的书,感谢作者和译者们,下面是节录其中和设计模式有关的两篇                            Abstract Factory, Template Style  “我们知道这是什么吗?”我指着放在前面金属台上的设备。这是在冰原下勘探到的第一批物体之一。  珍妮摇着头。”没呢,伙计。它可

推荐文章

热门文章

相关标签