第一章 Flex基础知识
静态网站
浏览器-www.friendsofed.com->
万维网路由器->
主Web服务器->搜索被请求的HTML页面,找到并将该页面打包,在包上面注明返回地址->
万维网路由器->
发送回浏览器->浏览器读取HTML代码,显示页面
”在因特网上查看Web页面“--这是一个普遍的误解。Web页面是下载到你的计算机上,并通过计算机看到的。一旦Web服务器把HTML页面发送给你,它的工作就完成了。
动态网站
浏览器-www.friendsofed.com/index.jsp->
万维网路由器->
主Web服务器->应用程序服务器,根据请求参数,访问数据库->数据库->应用程序服务器,根据返回的数据和模板,组成全新的HTML页面->主Web服务器->
万维网路由器->
发送回浏览器->浏览器读取HTML代码,显示页面
RIA网站
我们真正加载的只有一个文件,即Flash SWF。这之后,当信息需要改变时,刷新的是所改变的内容,而不是整个页面。错误更少,数据显示更快,用户体验更完美。
思想:可扩展性来自可传参。
第二章 Flex与Flex Builder 3
创建项目:
New Project
Project location :程序的硬盘位置。
Application type :程序的类型
Web application :Web程序,运行在浏览器上的Flash Player上。
AIR(Adobe Integrated Runtime):桌面程序,运行在桌面上。
Server technology :后台服务器类型。
Output folder:编译出来的SWF位置。
Source path:指定源文件的文件夹。
Main source folder : src
Main application file : project_name.mxml
Output folder URL :
Finish后,Flex Builder会自动生成一些文件夹和文件:
bin-debug:代码输出
src:包含主应用程序project_name.mxml
Flex项目都有一个叫做应用程序文件(application file)的MXML文件和另外几个叫做组件(component)的MXML文件组成。
开发项目:
Design模式
点击Design模式后,看到Components视图,States视图,Flex Properties视图。
Components视图
Controls:接受和发送数据
Layout:布局
Navigators:导航
Charts:图表
将组件拖动到页面中,组件就被添加到页面上了。
Flex Properties视图
选中组件后,Properties就会出现该组件的相应属性。
有Standard View,用来显示常用属性;有Category View,用来按分类显示所有属性。
代码模式
点击Source模式后,看到MXML代码。
无论你在MXML中创建应用程序还是用ActionScript直接编写代码,最终的一切都会是ActionScript。
<?xml version="1.0" encoding="utf-8">
所有的MXML文档都会以XML的一个DTD(Document Type Declaration,文档类型声明)开头。这意味着该文档将被检查,以确保其符合XML结构的规则。
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
主应用程序,且只有主应用程序文件,必须以Application标签开头。
Application标签有一个名为xmlns的属性,它代表XML命名空间。它的作用是让我们能够用一个简短的名称来替代整个路径的输入。
在这个案例中,即ActionScript SDK所在的路径。但是SDK的路径是Adobe的网站?显然不是!虽然它看起来像是一个URL,但它实际上是一个内部命令,用来告诉编译器在哪里找到SDK。
代码提示
输入<,会提示mx命名空间下可使用的类文件列表。选择类文件后,按Enter键,建立标签。
然后按空格键。Flex Builder会显示一个与该类相关的属性列表。输入开头选中并按Enter键,Flex Builder会建立语法,只需要输入属性值即可。
Outline视图
这里可以清晰的看到容器和子容器的关系。
在Flex中设计的时候,用容器(container)的方式经行思考是非常重要的。
帮助文档
现在你需要知道有那些类可使用,这些类有那些重要的属性。这时候就需要帮助文档。
选中某个类,点击F1,会看到该类的帮助文档。
http://www.adobe.com/devnet-apps/flex/tourdeflex/web/
编译执行
Flex应用程序会在SWF文件中运行。根据谈话对象的不同,SWF代表小Web格式(small Web format)或者Shockwave格式(Shockwave format)。该文件是一个二进制文件。
唯一能读取这个二进制文件的是Flash Player。
客户端浏览器调用的HTML文件中包含了Flash Player可识别的标签,一但有这个标签,客户端浏览器会将参数传递给Flash Player,Flash Player就会去下载编译好的SWF并显示。
Flex Builder已经帮我们生成了包含有编译好的SWF的HTML文件。将bin-debug文件夹放到服务器上,浏览器就可以访问到了。
在项目上右键,点Properties,选择Flex Complier,在Additional complier arguments中添加"-keep-generated-actionscript",bin-debug文件夹就会显示出generated文件夹。里面是Flex编译器自动生成的代码。
第三章 ActionScript
Flex主要聚焦点是使用MXML。这允许我们使用简单的易于理解的标签编写复杂的ActionScript代码。不过,MXML虽然强大,但是我们还是要编写ActionScript代码。
区分OOP程序和过程式程序的是代码的拆分方式。过程式程序使用的是长序列的代码。
OOP程序则会把代码分成多个更小、更专业的单元。这些单元被称为类文件(class)。
类文件就是一个独立的程序,其中包含执行某个专门任务的全部变量和函数。
类文件就像一个个工作站,对数据执行一个专门的任务。这项任务可以是格式化数据、执行运算、把数据发送到不同的位置。
因为类文件是独立且专用的,所以我们可以随时在任意项目中使用它们。
类是对象(object)的基础或模板,对象是类文件存储在计算机内存中的一个临时副本。
从本质上讲,ActionScript 3.0和其他OOP编程环境一样,只是预建的类文件的一个大型集合。所有的OOP程序中的预建类文件的集合都叫做SDK。
在使用ActionScript3.0时,由于我们需要对特定的工作执行专门的任务,类文件的库可能会增大。
编写自己特有的类文件的能力叫做可扩展性(extensibility)。它以为着我们在扩展SDK的能力。
此外,我们可能会从各种来源下载其他的类文件。大家会发现,随着时间的推移,我们的编码工作会越来越少,对可用类文件及使用方法的研究则会越来越多。
代码工作的减少意味着更快的项目完成速度和更低的出错率。
所有类都附有两个潜在的编程构造:属性(property)和函数(function)。
属性就是附加到类文件的一个变量,函数就是一系列组合在一起的命令,用来执行某个可以根据需要进行调用的动作。
ActionScript3.0的文档提到了第三个构造,事件监听程序(event listener)。
版本兼容问题
ActionScript3.0在架构上与版本ActionScript1.0和ActionScript2.0有所不同,因此,就会有一些兼容性方面的问题。
在实际Flex或Flash应用程序时,我们常常会让一个SWF文件调用另一个SWF文件。我们还常常让一个SWF文件向另一个SWF文件传递信息。
3.0可以与1.0和2.0做简单交互,但无法读取函数和属性。
对象 就是类文件在内存中的一个副本。可以想成一个带有属性和函数的变量。在创建对象时,我们将其称为类文件的一个实例。因为它是在内存中,且内存中可以有多个对象,所以我们必须有一种标识它们的方法。我们把标识叫做对象引用。在MXML中叫做id。每个标签都有一个对应的ActionScript类文件。MXML和ActionScript是达到相同终点的两种方法。
用大括号包围,叫做数据绑定,是MXML中一个对象可以从另一个对象中请求数据的方法。
为了向已有的MXML文件添加自定义的ActionScript代码,我们需要使用一个叫做Script标签的MXML标签。在该标签中设置一个CDATA标签告诉编译器用不同的方法对待其内容。
DCATA对XML文件来说是常见的。它会表明其内有编程代码,不要把它的内容看成是XML文件的一部分。
如果把变量比作容器,而容器是用来专门存放特定类型的项,那么变量就应该也只存放某个特定类型的项。
它会为着我们要将变量指派给一个类文件。该类文件的属性和函数会告诉变量什么可以做、什么不可以做。
块注释,在MXML中和ActionScript中都可以使用:选中代码,按Ctrl+Shift+C。
trace()可用来在调试时,在控制台打印。
处理事件:
到此为止,只要一启动应用程序,所有代码都会运行起来。但很多时候,我们想 等某个事件(event)发生之后才执行一些代码。
事件可以是鼠标按钮的一次点击、一次按键、鼠标在某个对象上悬停、应用程序在加载。
所有事件必须有两个组成部分:事件监听程序(event listener)和事件处理程序(event handler)。
顾名思义,事件监听程序所做的事情就是监听某个事件的发生。
一旦事件发生,事件监听程序就需要让某个函数知道,该执行任务了,那个函数就是事件处理程序。
如果看ActionScript文档,就会发现,几乎所有类都有特定的一组事件。
在MXML中,我们可以通过内联处理程序(inline handler),处理事件。意味着,我们可以把处理程序嵌入到MXML标签中。