`

[转]Flex的一些基本概念和原理

    博客分类:
  • Flex
阅读更多
  • 一些概念
  • 按我的理解,Flex的一些概念可以这样和Java的一些概念对应起来。
    1. Java是一个大概念,它可以表示一种编程语言,和一个程序运行的平台(包括基本类库和虚拟机);Flash也是这样的一个大概念,它可以表示一种编程语言(ActionScript),和一个程序运行的平台(必须运行在浏览器中的Flash Player和可以独立运行的Flash Air);
    2. Swing是用Java语言开发的一个开发包,可以帮助我们开发在浏览器中运行的程序(Applet),也可以开发桌面程序,Flex是ActionScript语言的一个开发包,可以帮助我们开发在浏览器中和在桌面运行的Flash程序;
    3. Java源程序.java,编译为字节码文件.class;Flex源程序.as,编译为字节码文件.swf。

    • Flash Player的基本结构

    Flash Player包含4个主要部分:

    1. 媒体播放器

    媒体播放器负责渲染和绘画矢量图形、生成文本并处理文本布局、播放和处理音频和视频。

    2. 虚拟机

    ActionScript生成的二进制SWF代码,通过虚拟机执行,并置入Flash的显示列表(Display List)中,进行渲染和显示。

    3. 网络通讯层

    Flash Player通过网络通讯组件实现基于HTTP和HTTPS的网络数据通讯和SOCKET通讯。

    4. 平台基础层

    大多数情况下,Flash Player作为插件被内嵌于浏览器中(如下图),平台基础层保证Flash Player能够集成于宿主环境,处理类似授权、网络代理等与宿主平台相关的事情。


    • Flash 虚拟机

    JRE(Java Runtime Environment)是编译和运行Java程序所必须的环境的集合,包含Java虚拟机、Java平台核心类和支持文件。CLR(Common Language Runtime)是微软.NET框架的虚拟机,用于编译并执行C#等语言代码。

    Flex世界,ActionScript虚拟机(简称AVM)扮演着JRE和CLR的角色。

    Flash Player 9包含了两个AVM:向下兼容的AVM1和新的、高度优化的AVM2。

    AVM1负责执行旧版 ActionScript(ActionScript 1和ActionScript 2),以便保持与现有内容的向后兼容。

    AVM2针对下一代 ActionScript 3.0的应用从头开始设计,可提供满足丰富互联网应用程序开发人员需要的性能和功能。

    AVM2是从Flash Player 9开始内置其中的全新ActionScript 3.0语言引擎,是最新的ActionScript虚拟机。针对新一代的ActionScript 3.0语言,Adobe重写了ActionScript虚拟机。新的虚拟机为RIA应用的开发者提供了更好的性能和更丰富的特性。AVM2 支持运行时错误报告、内置的调试和二进制套接字支持,使开发人员能够扩展Flash Player,与任何二进制协议一起使用。

    同AVM1完全不同的是,AVM2提供了即时编译器JIT(Just-in-time compiler)。通过将ActionScript字节码编译成机器码,最大化提升了应用执行速度。与此对比,AVM1是解释程序,通过将ActionScript源代码(不是字节码)翻译成机器码执行,是对ActionScript代码的解释执行。

    解释器是能够执行用其他计算机语言编写的程序的系统软件,它是一种翻译程序。它的执行方式是一边翻译一边执行,因此其执行效率一般偏低,但是解释器的实现较为简单,而且编写源程序的高级语言可以使用更加灵活和富于表现力的语法。AVM1是解释器。

    JIT(just-in-time compilation),即时编译,也被成为动态翻译,是一种通过在运行时将字节码编译为机器码,从而改善字节码编译语言性能的技术。AVM2内置JIT。

     

    • Flash 如何在浏览器中工作

     

    用户通过HTML页面访问Flash(即SWF文件)。Web服务器将发送的多媒体数据的类型通知给浏览器,而通知手段就是通过声明该多媒体数据的MIME类型,这样就可以让浏览器知道所接收信息的类型,并依此调用该类型信息所需的对应插件。

    SWF文件在HTML页面中以"application/x-shockwave-flash"的MIME类型存在。

    当浏览器读取到"application/x-shockwave-flash"这种信息类型时,会自动调用插件Flash Player来运行SWF文件。Flash Player对SWF进行渲染并显示,内嵌的AVM会执行ActionScript二进制编码。

    浏览器可以执行HTML中的JavaScript脚本程序,同时能够通过JavaScript脚本与Flash Player进行交互。反之,Flash Player中的AVM也能够通过外部接口同JavaScript进行通讯。

    通过Flash Player的网络通讯层,Flash Player也能够基于HTTP(s)或Socket实现与服务器端的通讯,例如与后端的Flash流媒体服务器FMS、服务器端Java程序甚至数据库之间进行网络数据通讯。

    分享到:
    评论

    相关推荐

      基本布局_flex基本布局模板_flex_

      这个"基本布局_flex基本布局模板_flex_"项目旨在介绍和提供一个基础的Flex布局模板,帮助开发者理解和应用Flex布局。 首先,我们要了解Flex布局的核心概念。Flex布局是CSS3中引入的一种新的布局模式,它使得容器...

      flex 六面体翻转例子

      首先,我们需要理解Flex布局的基本概念。Flex容器是包含一个或多个Flex项目(即子元素)的父元素。通过设置`display`属性为`flex`或`inline-flex`,我们可以将一个元素转换为Flex容器。Flex容器具有主轴(flex-...

      一些关于flex的示例网站

      通过一系列逐步指导,它帮助用户理解Flex的基本概念,包括MXML和ActionScript的基础,以及如何构建第一个Flex应用。重要知识点包括: - **MXML与ActionScript**:MXML是Flex的应用描述语言,而ActionScript则用于...

      编译原理之flex词法分析工具

      对于学习编译原理的学生来说,flex是一个很好的实践工具,它可以帮助理解词法分析的概念,并将理论知识应用到实际项目中。 总结起来,flex是实现词法分析的利器,它简化了编写识别源代码中不同符号的代码过程。通过...

      flex教程_chm

      "flex帮助"标签暗示了本教程可能包含了各种Flex编程的帮助信息,包括基本概念的介绍、语法详解、错误处理、调试技巧等。对于初学者,这些基础知识的掌握是至关重要的,可以帮助他们快速入门并顺利进行项目开发。 ...

      Flex cookbook(中文版)+Flex入门到实践

      Flex是Adobe公司开发的一种用于...通过阅读这两本书,学习者可以全面掌握Flex开发技术,从基本概念到高级特性,再到实际项目的构建和调试。无论是对于刚接触Flex的新手,还是希望深入研究的开发者,都能从中受益匪浅。

      flex-编译原理-计数器

      计数器在编译原理中是一个基本概念,它通常用于跟踪程序执行过程中的状态或统计信息。在`flex`中,我们可以利用计数器来跟踪输入字符串中特定字符或模式出现的次数,或者在解析过程中记录其他相关数据。 现在,让...

      Flex中利用IFrame解决嵌入HTML时Flex组件被遮挡和IFrame被隐藏的问题

      首先,理解Flex和IFrame的基本概念是必要的。Flex是一种基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。而IFrame(Inline Frame)是HTML的一个元素,允许在页面内嵌入另一个完整的网页。在...

      编译原理实验工具FLEX251+BISON,

      在计算机科学领域,编译原理是研究如何将高级编程语言转换为机器可理解的低级语言(通常是汇编代码或机器...通过学习和实践FLEX251和BISON,我们可以深入掌握编译器设计的关键概念,为未来的软件开发打下坚实的基础。

      Flex3中文版API

      1. **Flex3基本概念**:Flex3的核心是MXML,一种标记语言,允许开发者以声明式方式创建用户界面。ActionScript 3.0是它的编程语言,提供了面向对象的特性,如类、接口和包。Flex SDK包含了编译器、库以及构建Flex...

      flex自学手册源文件.rar

      总之,"flex自学手册源文件.rar"提供了一个全面的学习Flex开发的起点,通过实践和探索,你将能够掌握Flex的基本概念和技能,从而创建出富有交互性和动态性的网络应用。记得理论与实践相结合,不断试验和优化,你的...

      flex组件

      1. Flex布局的基本概念:包括Flex容器和Flex项目,以及它们的主要属性,如`display: flex`、`flex-direction`、`justify-content`、`align-items`等。 2. Flex属性详解:深入理解弹性系数`flex-grow`、`flex-shrink`...

      Flex完全自学教程

      通过学习ActionScript,你可以理解变量、数据类型、控制结构、函数、事件处理等基本概念,为深入Flex开发打下坚实基础。 三、MXML简介 MXML是一种声明式语言,用于构建Flex用户界面。它允许开发者以XML格式定义组件...

      Flex从入门到实践.

      对于初学者,理解Flex的基本概念和架构至关重要,包括MXML的组件布局、ActionScript的事件处理和数据绑定。同时,熟悉Flash Player的工作原理和Web开发背景也能帮助更好地掌握Flex技术。 总之,Flex是一个强大的...

      Flex小知识点

      这个"Flex小知识点"的标题暗示我们将探讨Flex的基本概念、核心组件以及它在实际开发中的应用。这篇博文链接虽然没有提供具体内容,但我们可以通过对Flex的通用知识进行深入讲解来涵盖相关主题。 首先,Flex提供了...

      Flex打印(转)

      1. **Flex基础**:讲解Flex的基本概念、环境搭建,以及ActionScript 3.0编程基础。 2. **Flex打印API**:介绍Flex SDK中用于打印的API,如`flash.printing.PrintJob`类,以及如何设置打印参数,如纸张大小、方向等。...

      flex绘图和遮罩

      Flex是Adobe开发的一种开源框架,主要用于构建富互联网应用程序(RIA),它基于ActionScript,...在提供的压缩包“绘图和遮罩”中,可能包含了示例代码和教程,通过研究这些资源,将有助于你更好地理解和应用这些概念。

      Flex翻书特效 OpenBook

      本文将深入探讨Flex翻书特效的相关知识点,包括Flex的基本概念、实现翻书特效的技术原理以及如何使用Flex Builder进行开发。 Flex是由Adobe公司开发的一种基于ActionScript的开源框架,主要用于构建富互联网应用...

      Flex 3D标签云

      1. **基础概念**:理解3D坐标系统,包括X、Y、Z轴的概念,以及如何在3D空间中定位和旋转对象。 2. **ActionScript 3.0**:学习面向对象的编程,熟悉基本类型、类、事件处理和动画帧脚本。 3. **MXML**:掌握Flex的...

      flex 样式浏览器生成器

      5. **学习Flex概念**:对于初学者来说,这样的工具也是学习Flex布局原理的好途径。通过实际操作,可以更好地理解flex-direction、justify-content、align-items等关键属性的作用。 6. **兼容性检查**:高质量的生成...

    Global site tag (gtag.js) - Google Analytics