Flex基本原理
了解Flex程序的生命周期
Flex程序从本质上讲,就是使用了(由AS编写的)Flex框架的Flash程序。
但在Flex程序中可以忽略timeline这个概念,所有的内容都集于一帧。
事实上Flex程序中的根,是继承flash.display.MovieClip的mx.managers.SystemManager。
SystemManager有两帧。第一帧是预加载程序,第二帧是主程序。
因此,所有程序在真正开始运行前,需要经过如下过程:
预初始(preinitialize)
程序在这个过程后,已经被实例化,但还未创建任何内容。
初始化(initialize)
程序在这个过程后,已创建好内容,但还未完成布局。
创建完成(creationComplete)
程序在这个过程后,已完成包括布局在内的所有创建。
在顺利完成以上3个过程后,SystemManager广播applicationComplete事件,意味着程序整装待发了。
SystemManager还管理着所有显示在前端的内容。包括弹出窗,鼠标指针,工具提示等。
SystemManager
有一个叫totelLevelSystemManager的属性。当Flex程序是一个独立程序时,该属性指向SystemManager的实例,而当
Flex程序是被加载到别的Flex程序时,该属性指向加载者的SystemManager实例。
所有UIComponents都有一个systemManager的属性,指向程序的SystemManager实例。
了解预加载器
预加载器由SystemManager在第一帧自动创建,当完成后发布complete事件,并进入第二帧,再由SystemManager删除。
除了complete以外,还有如下事件:
progress:程序下载过程
rslError:运行期共享库下载失败
rslProgress:运行期共享库下载过程
rslComplete:运行期共享库下载完成
initProgress:程序初始化过程
initComplete:程序初始化完成
在Flex程序中加载另一个Flex程序
被加载的Flex程序,在加载完毕后,自身内部会经历上述3个过程。最终,主程序才能对该程序进行有效的访问。
<!--
------------------------------------
B.mxml 生成 B.swf
--------------------------------------
-->
<?
xml version="1.0" encoding="utf-8"
?>
<
mx:Application
xmlns:mx
="http://www.adobe.com/2006/mxml"
layout
="absolute"
>
<
mx:Script
>
<![C
相关文档:
关于states
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Script>
<![CDATA[
import mx.effects.easing.Bounce;
]]>
</mx:Script>
<mx:states>
<mx:State name="bookDetails" ......
我个人觉得这个自定义时间封装性很好,但是有点复杂,不建议简单编程中使用
创建一个MXML组件,建自定义事件
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<!--[CDATA[
private function clickHandler():void{
// var m ......
源xml文件
<?xml version="1.0" encoding="iso-8859-1"?>
<books>
<stock>
<name>The Picasso Code</name>
<author>Dan Blue</author>
<category>Fiction</category>
<description>Cubist paintings reveal a secret society of people ......
最近在项目中要用到flv播放器,由于flex自带的VideoDisplay组件不是很好用,就自己简单实现了一个,界面不是很美观,但功能都有了,正可谓麻雀虽小五脏俱全。下面是播放器的代码,还不会用flash做flv播放器的朋友,可以参考参考。
Player.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="ht ......