理解Flex程序的运行机制
此文是我翻译自OReilly出版的 Programming Flex 2 中部分章节,略有修改.
从某种程度上说,即使一点也不了解Flex程序的运行机制,也并不妨碍我们开发Flex程序。不过,弄清楚那些基本的结构还是非常有好处的,起码可以知道它的内部是怎么工作的。这会帮助我们实现一些有趣的功能,比如个性化预加载条,在运行期间加载其它的Flex程序,管理运行期间库元件的加载和卸载等等。更远的方面,理解Flex程序的运行可以帮助完善程序,因为我们将知道如何去优化代码。比如,如果想确定哪些代码是在预加载期间执行的,就得知道如何去捕捉这些事件。
每个Flex程序都是从SystemManager开始的,它是flash.display.MovieClip的子类,一个可视的数据类型,MovieClip支持时间轴。SystemManager有两桢。Flex程序的第一桢用来显示一个下载进度条。这一桢应该尽量使用少量的元素,避免文件尺寸过大,使得可以被快速下载,这时候,Flex框架还有大部分没有加载,只有一些核心的类库被加载,加载结束后,进入第二桢。直到第二桢,程序才完全加载进来,包括程序中使用的Flex框架中的大部分类库。如果我们要个性化预加载条,就得先了解SystemManager的工作流程。
下图演示了程序的初始化流程:
一旦程序中SystemManager的实例进入第二桢,它将创建主程序类的一个实例。SystemManager实例有个属性“application”,初识值为null,直到此时才被指向主程序实例。然后,主程序的实例开始自身的初始化。这时,依次触发了主程序的内部事件: preinitialize 表示程序被初始化了但还没有开始创建任何子对象. initialize 程序创建了子对象但这些子对象还没有调整好布局 creationComplete 程序完成了初始化,并绘制好了所有子对象。
主程序完成了这一切后,抛出applicationComplete 事件,并告诉SystemManager :一切准备完毕,可以开始运行了. SystemManager也负责管理所有位于程序显示层次最顶层的对象,包括所有的pop up(弹出窗口),cursors(鼠标样式),和tool tips(鼠标提示)都位于SystemManager实例中。 SystemManager的属性“topLevelSystemManager”,代表当前运行在Flash Player中的根元素。在Flex程序中,这个属性总是指向SystemManager实例自身。当一个Flex程序被加载到另一个Flex程序中时,被加载的程序也会拥有自己的SystemManager,但这时候它的topLevelSystemManager属性就会指向主程序的SystemManager对象。 一般情况下,我们并不需要
相关文档:
首先在fademo.mxml中声明一个button,并添加一个btnClick方法:
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
......
1.如果使用MVC框架,相信这并不是一个问题。而如果没有使用的话,可以用类似的方法设置一个单例,子窗口和父窗口通过这个单例来交互消息,如果需要解耦,请发送自定义事件。总之,只要按照MVC思路来做就可以了。
2.类似JS,在子窗口的构造函数里增加一个参数,将父窗口传参进去。MXML没有构造函数,用一个属性来保存父窗口 ......
Flex Builder 快捷键
Adobe在开发Flex最有利的工具就是Flex Builder,快速键对一般开发者来说都非常有用,很多快速键与组合键是会与其他软体或系统都有雷同之处,譬如 Ctrl + C 就是复制,Ctrl + V 就是贴上。若你有注意到就会不难发现,其实Flex Builder有很多与Eclipse编辑工具也是有许多相似之处。 多加善以利用吧!
C ......
php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charse ......
在mxml的application类可以通过geturl获取当前url。获取url可以提供一个很好的方式对swf穿参数。在公司的项目中就大量的应用相关的技术。就和大家分享一下相关的写法,如果写不好就不要笑话哦。
分析url参数类:
package com.sunshine.framework.control
{
import com.sunshin ......