Flex程序启动过程再探秘: (1)基础知识
网络上有些针对标题题目的文章。读下来感觉似乎大概明白些什么,又似乎缺少些什么,不能从头到尾融会贯通。 我尝试从个人的理解出发,做些内容补充和个人解释。 (注:关于标题题目,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框架的重要的一环。 ???????????? 请参考:http://www.voidcn.com/article/p-fmismxji-bdn.html? ? (6).mx.managers.SystemManager 对象是Flex程序启动的原点 ???????????SystemManager继承自movieClip类。 ?????????? movieClip具有时间轴和帧。自然SystemManager 对象也具有时间轴和帧。 ?????????? 就像大家了解到的那样:Flex程序是由两帧构成的,第一帧用于预加载,第二帧才开始执行我们自己编写的Application代码。 ?????????? 这里所说的两帧,指的就是SystemManager 对象携带的两帧。
?
(7).“弹性跑到模型”
??????????? 请参考:
http://www.voidcn.com/article/p-pvjsljpy-bdn.html
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |