Flex Framework Fundamentals
转自:http://www.cnblogs.com/sharplife/archive/2007/09/03/880641.html
最近看时学习Flex应用,开始对Flex和Flash的关系有些模糊,读了Oreilly的Programming Flex
2才算是明白些,现记下。
1、Flex应用程序的生命周期
Flex应用就其根本上讲就是Flash应用,只不过其是基于Flex
Framework(由ActionScript写就)开发的。Flex应用程序的根对象的是SystemManager(不是我们在flex应用上看到的Application根元素),继承自flash.dispaly.MovieClip—flash
player display type,MovieClip是一种支持timeline基本元素帧frame的对象,在Flex
Framework中SystemManager是特殊的,含有两帧(其他component都是一帧的),分别是preloader和真正的Application,preloader帧可以迅速下载下来并用于显示应用下载进度,一旦Flex应用的SystemManager实例进入第二帧,将创建Flex主应用application实例并赋予本身的属性application(在进入第二帧之前是null),自此application(flex主应用)的内部生命周期、事件开始运作:
preinitialize:application已经实例化但尚未创建任何child
component
initialize:已经创建child component但对其进行布局(lay
out)
creationComplete:application已经完成实例化并完成所有child
component的布局
SystemManager有一个topLevelSystemManager对象,指向一个SystemManager实例,是所有当前在flash
player运行的任何东西的根(root),如果flex被作为主应用加载到flash
player则上述属性将指向其本身(self-refrencing),但当flex应用是被另一flex应用载入的,其自身的SystmenManager的topLevelSystemManager属性则不是自引用了,而是指向其父应用的SystemManager实例。所有UIComponent的子类都有一个systemManager属性指向应用的SystemManager实例,在被SystemManger实例监听的component的事件发生冒泡时,其将拥有事件处理链上最后的处理权。
2、Flash palyer和Framwork的区别
Flash
player是Flex应用和flash应用的运行环境,两应用对其拥有完全平等的操作权(通过Flash
player提供的API),两应用形成的.swf文件在flash
player中是同样的表现,不同的不是应用的内容而是其各自的创建方式。Flex的Framework在开发和运行之间为应用提供了一层抽象,Flex应用编译时会将必要的framwork
library编译进.swf文件(同样影响应用文件的大小等),主要的flash player class当然不会被编译到
相关文档:
用FLEX如何取浏览器地址栏中的域名信息?我查找到两种方法:
第一种方法是用ExternalInterface.call('window.location.href.toString'),它的值就是地址栏中的域名
有以下几点需要注意:
1.当Flash和加载它的网页不同域时,需要在网页在 PARAM 或 EMBED 标签中进行设置AllowScriptAccess 为“always”
关于 ......
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12" creationComplete="init()">
<mx:Script>
<!--[CDATA[
import mx.utils.*;
import flash.net.*;
......
新的一期的flash&flex 国外的杂志发布,看来一班制作人真的很有心思。最近CSDN 图片上传不到,连写东西也不方便了。
所以就无办法贴图了
有兴趣的人可以到这里下载新的一期外国的关于flash 和flex 资讯的杂志。
http://ffdmag-en.software.alfa.javatech.com.pl/download-1-2010 ......
用URLLoader加载XML,然后将data转化为ByteArray
用byteArray.readMultiByte(bytes.length,"utf-8")
然后将转化后的字符串再强制转化为XML
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.Binary;
var urlRequest:URLRequest = new URLRequest(source);
loader.addEventListener( ......
1:假如你要深复制一个类A
public class A
{
public var vo:B
}
你首先要做的是注册类,例如:
public static function registerClass():void
{
//把子类注册
PackUtil.registerClass(B);
}
//接下来就是克隆:
var cloneA:A=clone(A);
cloneA就是我 ......