构建一个Flex程序

2023-10-30

构建一个Flex程序

Flex定义了一个基于组件的开发模型,从而我们可以用来构建我们的程序。为了高效的设计与构建我们的程序,我们应该熟悉这个模型,以及程序开发步骤与布署过程。
在这一章描述了我们用来创建一个程序的开发过程。在这一章所包含的如下的一些信息:为了我们特定的需求需求而定制程序所要做出的决定,Flex产品线所提供的开发工具的概要,与其他的技术,如HTML和ColFusion的比较。

开发程序
Flex支持一个基于组件的开发模型。我们可以使用Flex中所包含的预构建的组件,我们可以通过创建新的组件来扩展Flex组件库,或者是我们可以组合预构建的组件来创建复合的组件。
程序模型
当我们使用Flex来构建一个程序,我们使用名为容器与控件的组件来描述我们的用户界面。一个容器就是屏幕上包含控件和其他容器的矩形区域。容器的一个例子就是为数据实体(data entry),盒子(Box),表格(Grid)所用的窗体(Form)容器。一个控件是一个窗体元素,例如按钮或是文件输入区。
例如,下面的图显示了两个不同的盒容器,每一个包含三个按钮与一个组合框控件。

上图演示了在水平盒(HBox)容器中的控件。HBox容器将他的控件在Flash播放器的平面上水平排列。上图同时演示了在垂直盒(VBox)容器中的控件。一个VBox容器垂直排列他的控件。
容器与控件定义了程序的用户界面。在MVC设计模式中,程序模型的这些方面代表视图(View)。模型(Model)是由数据模块表示的。Flex数据模型可以使得我们将我们的程序数据和业务逻辑与用户界面相分离。
我们使用MXML或是ActionScript作为Flex程序的一部分来定义数据模型。下图演示了在Flex中使用数据模型创建的窗体:

数据绑定是将一个对象中的数据绑定到另一个对象的过程。数据模型支持双向的数据绑定:可以从Flex控件向数据模型写入数据,或者是从数据模式向控件读入数据。我们也可以绑定服务器数据到一个数据模型或是直接到Flex控件。例如,我们可以将从一个网络服务器返回的结果绑定到数据模型,然后将数据传递到我们的窗体控件。
数据模型支持自动的数据有效性验证。这意味着我们可以使用Flex的验证器,例如邮编(ZipCode)验证器来保证模型区域中的值是有效的邮编。如果数据无效,我们可以向用户显示消息,从而用户可以纠正这些错误。
Flex如何适应MVC模型
模型-视图-控制器(Model-View-Controller)(MVC)体系结构的目的是通过创建在程序中定义良好与区域有限的组件,来增加我们的组件的重用性以及改进整个系统的可维护性。使用MVC结构,我们可以整个系统分为三个类型的组件:
模型组件封装数据以及以数据相关的行为。
视图组件定义我们程序的用户界面。
控制器组件处理我们程序中的交互。
例如,使用MVC设计,我们可以实现一个数据实体窗体为三个不同的部分:
由XML数据文件或是远程数据服务调用组成的保持窗体数据的模型。
视图由所有户界面元素的数据和显示所表示。
控制器包含用户界面逻辑。
尽管我们可以将Flex程序看作分布式MVC结构中视图的一部分,我们可以使用Flex来在客户端实现完整的MVC结构。一个Flex程序有他自己的视图组件来定义用户界面,模型组件来表示数据,控制器组件与负责与后台系统的交互。任何的客户端部分在HTML中是不可用的。

使用网络服务器工作
我们的开发与布署环境通常包含一个网络服务器,在这里我们使用网络服务器返回一个Flex SWF文件来响应用户的请求。我们可以使用下面的任何一种网络服务器:
简单的网络服务器
一个简单的网络服务器使用简单的HTML页面响应静态的页面请求。在这种情况下,我们预编译我们的Flex程序并且编写一个包装将我们的Flex程序的SWF文件嵌入到HTML页面中。
网络程序服务器
一个网络程序服务器,例如JRUN,ColFusion,或者是PHP,可以动态的生成页面来运行我们的Flex程序。在这种情况下,我们可以利用程序服务器的可用标签库和处理语言来为我们的Flex程序动态的生成包装。然而,我们必须在向这种类型的服务器布署之前预编译我们的Flex程序。我们可以使用任何一种类型的服务器,而并不仅是一个Java程序服务器来提供Flex程序,只要我们预编译我们的程序,并且程序不使用在Flex数据服务中可用的服务。
J2EE程序服务器或Servlet容器
我们需要J2EE程序服务器或是Servlet容器,例如JRUN,Tomcat或者是WebSphere来运行Flex数据服务。我们通常在运行Flex数据服务的服务器上布署之前预编译我们的Flex程序。然而,在开发过程中,我们可以在浏览器上请求一个Flex程序的MXMl文件,从而在运行时编译Flex程序。这会调用可以生成包装的编译器并且返回一个编译的SWF文件。
当安装Flex数据服务时我们可以有选择的来安装集成的JRUN J2EE服务器。集成的JRun服务器只是JRun 4程序服务器的开发版本,而且不是为部署而使用的。JRun的集成版本同时包含JRun网络服务器(JWS),我们可以用来处理HTTP请求。这个服务器也不是为部署而使用的。
在最简的情况下,我们应在我们的开发环境中有一个简单的网络服务器。没有网络服务器,我们只可以在独立运行的Flash播放器中运行Flex程序或者是在浏览器中请求SWF文件。前者并不推荐,因为他阻止了我们的程序使用Flex更多的网络特性。后者不推荐是因为并不是所有的浏览器都支持直接的SWF文件请求。

程序开发步骤
我们通常使用下面步骤来开发一个Flex程序:
1 在文本编辑器或是集成开发环境中,例如Adobe Flex Builder,Eclipse,或是IntelliJ,在MXML文件中插入MXML根标签。
2 添加一个或是多个容器。
3 向容器中添加控制器,例如输入域,按钮,输出域。
4 定义数据模型。
5 添加网络服务,HTTP服务,或是请求一个远程Java对象。
6 向输入数据添加验证。
7 添加脚本来扩展组件。
8 编译我们的程序为SWF文件。
注意:如果我们有Flex数据服务,我们可以部署我们的程序为MXML和ActionScript文件的集合。一旦接收一个HTTP请求到一个MXML文件,Flex数据服务编译我们的程序为一个SWF文件。
部署文件
我们可以部署我们的程序为一个编译的SWF文件,或者如果我们有Flex数据服务,我们可以部署我们的程序为一个MXML和ActionScript文件的集合。
部署SWF文件
在我们编译我们的程序为一个SWF文件后,我们可以通过将这个文件拷贝到网络服务器或是程序服务器的目录中来实现部署。用户可以通过HTTP请求来访问部署的SWF文件:
http://hostname/path/filename.swf
尽管我们可以直接访问一个SWF文件,通常我们使用一个包装将SWF合并到一个网页。包装负责将Flex程序的SWF文件嵌入到网页中,例如一个HTML,ASP,JSP或是ColFusion页面。另外,我们在包装中使用逻辑来允许历史管理,急速安装(Express Install),来允许或不允许Javascript的浏览器都可以访问Flex程序。
部署MXML和ActionScript文件
如果我们有Flex数据服务,我们可以将我们的程序部署为MXML和ActionScript文件的集合。当我们部署我们的程序为MXML和ActionScript文件集合时,用户请求主要的MXML文件来开始一个程序。用户第一次在网络浏览器中请求MXML文件的URL时,服务器编译MXML代码为SWF文件。服务器将SWF文件发送到网络浏览器由Flash播放器运行。
Flex程序使用MXML文件扩展名。我们将这些文件存放在我们的J2EE程序的网络根目录下。
要请求一个由MXML和ActionScript文件部署的程序,用户向主要的MXML文件发送请求:
http://hostname/path/filename.mxml
主要的MXML文件包含<mx:Application>标签。
MXML文件一旦接收到一个HTTP请求,Flex执行如下的操作:
1 编译MXML文件来生成一个SWF文件
2 在服务器上缓存编译的SWF文件
3 向客户端返回SWF文件
一旦向MXML文件发送请,Flex服务器会检测自上一次请求以来是否修改了MXML文件。如果,他会由缓存中返回同样的SWF文件。如果MXML已经修改了,Flex服务器重新编译这个文件,并且向客户端返回一个更新的SWF文件。
 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建一个Flex程序 的相关文章

  • Web 安全漏洞之 OS 命令注入

    什么是 OS 命令注入 上周我们分享了一篇 Web 安全漏洞之 SQL 注入 其原理简单来说就是因为 SQL 是一种结构化字符串语言 攻击者利用可以随意构造语句的漏洞构造了开发者意料之外的语句 而今天要讲的 OS 命令注入其实原理和 SQL
  • 38条Web测试经验分享

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • 「网络安全渗透」如果你还不懂CSRF?这一篇让你彻底掌握

    1 什么是 CSRF 面试的时候的著名问题 谈一谈你对 CSRF 与 SSRF 区别的看法 这个问题 如果我们用非常通俗的语言讲的话 CSRF 更像是钓鱼的举动 是用户攻击用户的 而对于 SSRF 来说 是由服务器发出请求 用户 日 服务器
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 揭秘网络世界的幕后密码——Wireshark网络协议分析软件

    在我们日常生活中 计算机和互联网已经成为不可或缺的一部分 然而 很少有人真正了解网络背后复杂的工作原理和通信协议 幸运的是 有一款强大而实用的软件 Wireshark 可以帮助我们深入了解网络世界的幕后密码 Wireshark是一款免费的网
  • 网络安全基础知识面试题库

    1 基于路由器的攻击手段 1 1 源IP地址欺骗式攻击 入侵者从外部传输一个伪装成来自内部主机的数据包 数据包的IP是 内网的合法IP 对策 丢弃所有来自路由器外端口 却使用内部源地址的数据包 1 2 源路由攻击 入侵者让数据包循着一个不可
  • 国外拨号VPS指南:开启你的全球网络之旅

    在当今数字化时代 互联网已经成为了我们生活的一部分 而要在全球范围内畅通无阻地访问互联网 拥有一个可靠的国外拨号VPS是非常重要的 无论您是为了工作 学习还是娱乐 国外拨号VPS都可以为您提供更广泛的网络体验 本文将为您提供国外拨号VPS的
  • 内网安全:隧道技术详解

    目录 隧道技术 反向连接技术 反向连接实验所用网络拓扑图及说明 网络说明 防火墙限制说明 实验前提说明 实战一 CS反向连接上线 拿下Win2008 一 使用转发代理上线创建监听器 二 上传后门执行上线 隧道技术 SMB协议 SMB协议介绍
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 2023下半年软考「单独划线」合格标准公布

    中国计算机技术职业资格网发布了 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告 2023下半年软考单独划线地区合格标准各科目均为42分 01 官方通告 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告
  • 适用于 Android 的 Adob​​e AIR 上的无引脚 OAuth

    我在 Adob e AIR for Desktop iOS 上使用了无引脚 OAuth 但在 Android 上则不行 由于某种原因 我们没有得到 oauth verifier 其中包含 Android 设备上 StageWebView 中
  • Netstream 和step() 或seek()?

    我正在做一个 AS3 项目 正在播放视频 H264 由于某些特殊原因 我想去某个职位 a 我尝试使用 NetStream seek 在那里它只进入关键帧 在我当前的设置中 这意味着 我可以每 1 秒找到一个位置 为了获得更好的分辨率 我必须
  • 如何让定时器准确? (Flash/ActionScript 3.0)

    我使用以下方法以 X 次 分钟发送声音 X 通过 bpm 确定 它是一个 NumericStepper 对象 var mainTimer Timer new Timer 60 bpm value 1000 0 mainTimer addEv
  • 使用动作脚本获取IP地址?

    是否可以通过Flash swf Action Script 3获取客户端IP地址 然后将其传递到php文件以将其存储在数据库中 无需在 Flash 中执行此操作 只需在服务器上的 php ip REMOTE ADDR 中执行此操作即可
  • IntelliJ IDEA 12——查看调用堆栈

    我是 IntelliJ IDE 的新手 通常使用 Visual Studio 我想查看特定断点处的当前调用堆栈 我找到了有关构建调用层次结构的信息 但这不是我要找的 任何有关如何查看当前调用堆栈的信息将不胜感激 The call stack
  • 如何将 Class 文件的功能链接到 DocumentClass 和 AS3 中的 Movieclips?

    我在从时间轴代码切换到 OOP 文档类时遇到问题 我成功地用 AS3 按时构建了 Fla 没有任何问题 但在面向对象编程时完全无能为力 有人告诉我场景不好 我应该坚持将场景保存为影片剪辑 我的情况是这样的 我有 8 页 PSD 文件 我将每
  • 生成加权随机数

    我正在尝试设计一种 好的 方法从一系列可能的数字中选择一个随机数 其中该范围内的每个数字都被赋予一个权重 简单地说 给定数字范围 0 1 2 选择一个数字 其中 0 有 80 的概率被选中 1 有 10 的概率 2 有 10 的概率 自从我
  • 推荐一个适用于 Flex 和 AIR 的 HTML 友好的 RichTextEditor? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 闪存和 CORBA

    如何让 AS3 和 或 Flex AIR 应用程序与 CORBA 应用程序进行通信 在有人为 Flex 编写符合 CORBA 的库 您可能愿意自己做 之前 您最好的选择可能是构建一个充当桥梁的 包装器 Web 服务 可通过标准 Flex W
  • 使用 Flash 在本地托管游戏?

    我只是找不到合适的谷歌搜索词 是否可以使用 Flash 或 Flash 兼容服务 来允许游戏中的玩家通过 Web 浏览器托管自己的游戏 使用自己的带宽 在某种程度上 从他们的计算机运行他们自己的游戏服务器 对于 Flash 浏览器内游戏 但

随机推荐

  • JavaScript 实现全选、全不选和反选功能

    网页中使用到表单复选框时 如果有大量的数据需要选择 经常会用到全选或者反选功能 也可能会用到全不选功能 其实是全选的反选 下面使用原生的js来实现一下全选 全不选和反选功能 声明 文章转载链接出自 JavaScript 实现全选 全不选和反
  • 《Leaflet 基础知识点》- 绘制圆、线、矩形和多边形

    前言 注意绘制的都是矢量图层 所以在 Vector Layers 分类下 绘制 圆 官网API 示例 圆 半径 radius 的单位为米 var circle L circle 31 537628173828125 121 19018554
  • 给label绘制下划线

    UIlabel本身没有下划线的属性 使用绘制的方法 添加下滑下 并且赋给该label一个action作为响应方法 实现DIY超链接的效果 调用 import UnderLineLabel h UnderLineLabel label Und
  • naive 路由使用 loadingBar 进度条

    环境 devDependencies vitejs plugin vue 4 2 3 axios 1 4 0 less 4 1 3 less loader 11 1 3 naive ui 2 34 4 pinia 2 1 4 typescr
  • PostMan使用技巧:“status“: 415 解决方案

    前言 该错误的出现 主要原因是Postmanf操作不当所致 下面代码为调用方法入口 一 错误提示信息 二 处理方案 如下图所示 调整传参方式为Body gt raw gt JSON application json 尾言 错误不大 侮辱性极
  • usb:认识usb传输(一)

    文章目录 一 usb发展背景 1 usb特点 2 usb发展 1 更名 2 发展 3 传输速度 4 usb编 解码方式 反向不归零 NRZI 位填充 5 信号传输状态 5 帧 6 通讯过程划分 二 usb的四种传输 1 控制传输 2 中断传
  • UE4鼠标滚轮控制镜头缩放

    蓝图 因为其实实现起来比较简单 所以直接上蓝图 主要是用到了UE4的鼠标滚轮操作映射 每当滑动鼠标滚轮的时候就会传出一个数值 有正有负有0 然后将角色的相机摇臂组件拖进蓝图 获取其中的Target Arm Length变量加上一个数值再重新
  • postman实战:2.参数化csv和json

    在上节课讲解了使用postman做接口测试时 如何设置环境变量和全局变量关联参数 关联环境变量和全局变量中参数时 他们的作用范围再来回顾一下 下面来看一下postman里面关于参数化的应用 首先分析下应用场景 1 某一个接口我们对入参设计了
  • 十二、支持向量机

    def svmm 支持向量机 完善 用超平面对高纬空间中的样本进行分类 为了解决线性不可分问题 引入了核函数 常用核函数有线性核函数 多项式核函数 高斯核函数和sigmoid核函数 API sklearn svm SVC C 1 0 ker
  • 机器学习综述论文笔记:Machine Learning: A Review of Learning Types

    机器学习review Paper Machine Learning A Review of Learning Types 这是一篇关于机器学习的综述 里面简述了各种现有的机器学习技术 1 主要的方法 监督 无监督 强化 1 1 监督学习 数
  • Redis原理篇(二)网络模型

    一 用户空间和内核空间 应用需要通过Linux内核与硬件交互 内核本质也是应用 运行的时候也需要CPU资源 内存资源 用户应用也在消耗这些资源 为了避免用户应用导致冲突甚至内核崩溃 用户应用与内核是分离的 进程的寻址空间会划分为两部分 内核
  • 公司前端vue是用vscode开发工具写的,个人喜欢用idea,但是idea在保存代码的时候会自动去除代码行最后的空格,造成不该修改的地方修改了,影响代码提交

    取消这个功能 File Settings Editor General On Save Remave trailing
  • springBoot 观察者模式

    观察者设计模式 jie神说用订阅和发布来理解更好 我想了一下是的 为什么呢 因为监听器这个名词听起来是一个主动的 可实际监听器是一个被动的玩意 比如我们事件源发布一个事件 然后监听器订阅了这个事件就能做出动作 里面涉及到三个对象 事件源 事
  • 【2023】JAVA和PLC实现通讯读取写入数据,以三菱PLC举例

    1 创建maven工程引入依赖
  • --- Error: User Command terminated, Exit-Code = 1解决办法

    使用keil MDK编译项目时 compiling编译通过 但是文件最后出现错误 Error User Command terminated Exit Code 1 经查阅资料 MDK需要fromelf exe文件生成 bin 那么在重新安
  • uboot编译报错解决

    uboot编译报错 root ubuntu home gjt uboot u boot 2015 01 make scripts kconfig conf silentoldconfig Kconfig scripts kconfig co
  • Protobuf 使用(c++)

    一 Protobuf 安装 安装protobuf tar xvf protobuf cd protobuf autogen sh生成configure configure prefix usr local protobuf make mak
  • 用P5.js实现一个动态的绘画系统

    摘要 通过一段时间的学习 我发现码绘的可能性比我想象的要更大 我们可以用码绘实现很多手绘很难达到的效果 比如创作一幅会动的 能进行交互的画作 如何通过类似画笔的东西在屏幕上创作出时刻在改变的 并且我们可以进行实时修改的像动画一样的作品 这就
  • AutoSchedule和AutoTVM

    简介 AutoTVM 用户自己手写一个模版 在模版里面自己定义一下tune的参数 例如tile size等 给定一个模版 在这个模版里面去搜索参数 使得可以达到一组最好的参数使得张量计算的结果最好 但是 它是一种基于模板的方法 因此仍然需要
  • 构建一个Flex程序

    构建一个Flex程序 Flex定义了一个基于组件的开发模型 从而我们可以用来构建我们的程序 为了高效的设计与构建我们的程序 我们应该熟悉这个模型 以及程序开发步骤与布署过程 在这一章描述了我们用来创建一个程序的开发过程 在这一章所包含的如下