50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

Flex 开发者需要知道的 10 件事

  • 2010-02-18
  • 本文字数:1606 字

    阅读完需:约 5 分钟

不久前, Michael Portuesi 发表了一篇博文,谈到了Flex 开发者需要知道的10 件事。文章介绍了每个进入Flex 领域的开发者都需要掌握的基本知识与技能。

Michael Portuesi 给出的 10 个条目中,有些是开发者需要了解的简单细节信息;有些则揭示了 Flash/ActionScript/Flex 与其他开发环境之间的差别。

如果你了解 HTML/CSS 并熟悉 JavaScript,但却对 ActionScript 或 Flex 一无所知的话,那么应该花些时间学习一下面向对象编程,因为 ActionScript 是一门完全的面向对象编程语言,而 Flex 则是一个面向对象的框架。

1. 再简单的东西也是异步的

Flex 是一个异步框架,因此我们绝对不能指望代码调用后就能立刻执行。事实上,我们是无法预知方法的调用序列的。

2. 搞清楚 Flex 组件的样式与属性

Flex UI 组件(按钮、菜单等等)既有属性(通过 ActionScript 语言指定)也有样式(通过 Flex 框架指定)。搞清楚他们之间的区别是非常重要的,因为组件的某些可视化效果可以通过属性指定,但另一些却只能通过样式设定。通过属性指定:

复制代码
button.width = 100;
button.height = 50;

通过样式指定:

复制代码
<mx:Style>
Button {
color: #cc0000;
textRollOverColor: #ccff00;
fontFamily: Trebuchet MS;
}
</mx:Style>
<mx:Button id="setupB" text="Click Me" click="onSetup()" />

3. Flex 中的样式与 HTML 中的不尽相同

可以使用标准的 CSS 样式表来为 Flex 组件添加样式,也可以在 Flex 应用中包含 CSS 样式表。虽然标准 CSS 使用连字符(例如 text-font)格式来定义样式名称,但是 Flex 使用驼峰式的命名格式(例如 textFont)。这是因为连字符不能出现在 XML 的属性中,所以不能用这样的名字作为 MXML 标签的属性。

当然了,如果把样式定义在外部的 CSS 文件中或者 Style 标签中,也可以使用连字符格式的样式名。此外,Flex 还定义了很多 HTML 中不存在的 CSS 样式。

4. 尽管看起来不同,但 MXML 和 ActionScript 本质上是一回事

在 Flex 中声明的所有 MXML 标签都会被 Flex 编译器转换为 ActionScript 代码;当然了,也可以在 MXML 文件中嵌入内联的 ActionScript 代码。既可以使用 MXML 也可以使用 ActionScript 创建新组件。

5. 理解 Flex 的 Code-behind 模式

虽然 MXML 和 ActionScript 本质上是一样的,但他们各司其职。一般来说,MXML 负责显示界面,而 ActionScript 用来完成功能。Code-behind 用于解耦 MXML 和 ActionScript,这样设计师可以直接修改 MXML 而无需阅读代码,程序员则可以更好地组织和重用功能。

6. 理解 Flex 组件的生命周期

Flex 通过状态机机制定义了一套完美的生命周期模型,用于组件的创建、运行和销毁,还定义了一些“入口”,开发者可以借此完成定制化的工作。没有透彻理解组件的生命周期可能会导致错误的编程模型。

7. 理解 Flash 运行时所使用的“跑道”模型

理解 Flash Player 的渲染和代码执行机制非常重要的。在执行了改变界面的指令时,Flash Player 并不是立刻把你要的内容显示在屏幕上,它根据一定的周期来刷新屏幕,而代码的执行则是另一回事。这和 Java 正好相反,Java 总是等待程序主动告诉它什么时候重绘屏幕。

8. 理解数据绑定与查看器(Watcher)

Flex 提供了一种数据绑定机制。简单地说,就是将一个源属性绑定到一个目标属性上,当源属性发生变化时,目标属性也会随之变化。不仅仅可以绑定到属性,还可以绑定到函数。甚至可以为某个属性创建一个 Watcher,当属性变化时会获得事件通知。

9. 数据封装与松耦合非常重要

对于 Flex 和 AIR 项目来说,代码组织与高层结构非常重要。有些人竟然在一个文件中编写了 1000 多行代码,这导致的问题就是牵一发而动全身。

10. 理解 ActionScript 中的弱引用与强引用

不管使用何种语言与开发环境,内存管理始终是一个重要的问题,ActionScript 也不例外。如果不理解运行时环境的内存管理,那么很容易就会出现内存泄露与内存碎片问题。请阅读这篇博文文章来深入了解 ActionScript 的垃圾收集机制。

2010-02-18 01:259179
用户头像

发布了 88 篇内容, 共 272.6 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

从P5~P8!最适合在职Java程序员学习提升路线大公开!

Java永远的神

程序人生 后端 架构师 java程序员 Java学习路线

一文梳理2048小游戏从开发到上云全流程

华为云开发者联盟

云计算 游戏开发 华为云 企业号十月 PK 榜 2048小游戏

多版本并行,测试如何做好质量保障?

老张

质量保障 版本迭代

新来个技术总监,仅花2小时,撸出一个多线程永动任务,看完直接跪了,真牛逼!

小小怪下士

Java 程序员 多线程

OpenHarmony轻量系统中内核资源主要管理方式

OpenHarmony开发者

OpenHarmony

细说nodejs的path模块

coder2028

node.js

【LeetCode】无法吃午餐的学生数量Java题解

Albert

算法 LeetCode 10月月更

为了讲明白继承和super、this关键字,群主发了20块钱群红包

华为云开发者联盟

开发 华为云 企业号十月 PK 榜 发红包

深入nodejs的event-loop

coder2028

node.js

钛媒体 | 发布PaaS平台2.0,元年科技通过自主技术撬起更大市场

元年技术洞察

媒体 PaaS

koa实战

coder2028

node.js

TiDB v6.1.0 及 TiUniManager 在 openEuler 22.03 中的部署踩坑实践

TiDB 社区干货传送门

实践案例 管理与运维 安装 & 部署 应用适配 6.x 实践

“程”风破浪的开发者|THREE.JS实现看房自由(VR看房)

知心宝贝

前端 three.js 元宇宙 VR看房 “程”风破浪的开发者

车联网移动场景MQTT通信优化实践

EMQ映云科技

车联网 物联网 IoT mqtt 10月月更

建木v2.5.7发布

Jianmu

DevOps 持续集成 CI/CD 自动化运维

数据中台的前世今生(一):数据仓库——数据应用需求的涌现

雨果

数据中台 数据仓库

TiCDC 实践:TiDB 到 TiDB 增量数据迁移

TiDB 社区干货传送门

迁移

Rocksdb dynamic-level-bytes测试简单记录

TiDB 社区干货传送门

实践案例 管理与运维

Kyligence 当选 Gartner 2022 中国数据管理 Cool Vendor

Kyligence

Gartner 数据管理

千万级高并发秒杀系统设计套路!超详细解读~~

博文视点Broadview

【文本检测与识别白皮书】第三章-第三节:算法模型

合合技术团队

人工智能 深度学习 文字识别 文本

Java中的抽象类详解

共饮一杯无

Java 抽象类 10月月更

如何定义LED显示屏与OLED显示屏

Dylan

LED LED显示屏 OLED

零信任时代安全沙箱成为企业应用必需品

FinClip

“程”风破浪的开发者|什么是web3.0,一文带你搞懂它

共饮一杯无

前沿技术 Web3.0 10月月更 “程”风破浪的开发者

Docker | 部署nginx服务

甜点cc

nginx Docker 10月月更

面试官:你说说JavaScript中类型的转换机制

CoderBin

JavaScript 面试 前端 类型转换 10月月更

企业架构-了解分布式

Marvin

企业架构 分布式系统 凤凰架构 书籍拆解

Nodejs:ESModule和commonjs,傻傻分不清

coder2028

node.js

Docker | 镜像浅析,以及制作自己的镜像

甜点cc

Docker tomcat 10月月更

Flex开发者需要知道的10件事_Java_张龙_InfoQ精选文章