您的位置:首页 > 其它

Flex程序启动过程再探秘: (1)基础知识

2012-01-29 22:56 393 查看
网络上有些针对标题题目的文章。读下来感觉似乎大概明白些什么,又似乎缺少些什么,不能从头到尾融会贯通。

我尝试从个人的理解出发,做些内容补充和个人解释。

(注:关于标题题目,Adobe官方没有明确资料进行阐述,所以描述的一切内容皆是基于对Flex SDK源代码的分析和Flex大牛们的经验引导,需要读者带着一起探讨的态度来读这篇文章)

>>讲在前面

Flex3和Flex4虽然有不同,但是对于标题题目而言,两者没有区别,所以分析哪种SDK都可以。作者使用Flex4 SDK。

一. Flash / FlashPlayer 基础知识

我大胆滴猜测诸公中有很大一部分和我一样没有Flash开发经验。

那么我再次明确一下: Flex就是Flash,没有Flash和FlashPlayer的一些必备知识,想要把Flex框架搞清楚是非常困难的。

那些知识是必须了解和掌握的呢?我们在下面逐一列举和说明。

对于这些知识,我们乍一看不能够透彻了解的话没有关系,随着对后续内容的阐述,返回头来再看这些知识点,就会理解颇深。

(1). Flex就是Flash

swf文件是一种规范格式的文件类型。对于FlashPlayer而言,无法分辨出swf文件究竟是Flash开发的,还是Flex开发的。

换句话讲,Flex和Flash编译出的swf文件遵守相同的内容格式和组织规则。

Flex和Flash同根(ActionScriprt)不同株(一个面向逻辑开发者,一个面向动画设计师)。

那么Flex和Flash有什么不同呢?

Flex框架为开发者隐藏了Flash中的开发动画需要的两个重要概念:时间轴和帧。从而使得Flex和Flash看起来有很大不一样。

记住:时间轴和帧的概念只是被Flex框架所隐藏,而不是取消。在Flex框架底层,我们看得到时间轴和帧的身影,更确切地说,时间轴和帧是Flex框架的基石。

所以没有Flash的相关知识,无法理解和看懂Flex框架源代码。

(2).再次认识FlashPlayer对于Flex的意义

FlashPlayer是Flex程序的运行环境和执行引擎。

Flex程序的运行依赖于FlashPlayer自身运行特点,需要FlashPlayer原生事件驱动才能执行。

所以没有FlashPlayer的相关知识,无法理解和看懂Flex框架源代码。

(3).时间轴、帧、视觉暂留(人眼的生理特性)

光对视网膜所产生的视觉在光停止作用后,仍保留一段时间的现象,是视觉暂留。这就是会动的卡通的基本原理。视觉暂留的时间是0.1秒。

如果每间隔0.1秒,我们连续切换一系列内容变化很小的图片,对于人眼而言,看到的这些变化就是连续的,就是动画效果。

我们可以简单地认为在自然推移的时间线上(时间轴),线上的每个时点的内容和状态(帧)构成了视觉动画的必备要素。如果这些时点间距足够小(<0.1秒),那么就产生了动画效果。

Flash是二维矢量的动画的主要工具。

Flex程序也是某种意义上的动画,是由用户操作引起的操作界面的平滑变化。

(4).flash.display.MovieClip是什么?

百度的解释:movieClip的中文意思是“影片剪辑”,是Flash中的概念,就是一个相对独立的动画片段,当然,这个动画片段也不一定是会运动的,也可以是静止状态的(可以看作是运动的“特殊情形”)。

movieClip是具有时间轴和帧的对象。不同的帧处于时间轴的不同点上,由FlashPlaye负责按照时间顺序播放各个帧的内容。

FlashPlayer可以自由控制帧内容的播放,比如让播放头停止在某帧上,或进入下一帧,或跳转到指定帧,或循环播放某个范围的帧。

Flex框架中使用到了上述前两个功能:

让播放头停止在某帧上:stop()函数;

让播放头进入下一帧 :nextFrame()函数;

(5).ENTER_FRAME事件

(2)中说过,FlashPlayer自身发出的事件是驱动Flex程序运行的原动力。其中FlashPlayer的ENTER_FRAME事件是非常重要的。

对该事件的理解是理解Flex框架的重要的一环。

请参考:/article/7901521.html

(6).mx.managers.SystemManager 对象是Flex程序启动的原点

SystemManager继承自movieClip类。

movieClip具有时间轴和帧。自然SystemManager 对象也具有时间轴和帧。

就像大家了解到的那样:Flex程序是由两帧构成的,第一帧用于预加载,第二帧才开始执行我们自己编写的Application代码。

这里所说的两帧,指的就是SystemManager 对象携带的两帧。

(7).“弹性跑到模型”
请参考: http://blog.csdn.net/tiangej/article/details/7220683
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: