- 浏览: 201058 次
- 性别:
- 来自: 苏州
文章分类
最新评论
Flex 3.0中最大的变化在于新增AIR工程。AIR应用程序是一种桌面应用程序。因为要支持对本地资源的操作,所以Flex 3.0中新增许多对本地资源的操作,如本地文件、PDF文件等。另外,AIR应用程序支持版本升级、集成网页、使用Ajax技术等。本章将介绍Flex 3.0这些新特性的具体应用。
23.1 加载PDF文件
在Flex 3.0中的AIR工程中新增HTMLControl类和HTMLPDFCapability类。通过这两个类可实现加载PDF文件,丰富了AIR应用程序的效果和功能。本小节将为读者介绍如何在AIR工程中加载PDF文件。
23.1.1 加载PDF文件前的准备
加载PDF文件需要有两个条件:第一是必须为AIR工程,第二是系统已安装Adobe Reader 8.1以上版本。前者是因为Flex 3.0中只有在AIR工程中可引用HTMLControl类和HTMLPDFCapability类。究其深层原因是Adobe公司只允许桌面应用程序(AIR)访问本地资源。其他Web工程出于安全性考虑,不可直接访问本地资源。
23.1.2 使用HTMLControl类加载PDF文件
HTMLControl类是AIR中新增的类,用于加载PDF。使用HTMLControl类加载PDF文件的语法如下所示。
HTMLControl变量.load(URLRequest变量);
以下代码使用HTMLControl类加载“123.pdf”文件。
var t:URLRequest=new URLRequest("123.pdf");
var hc:HTMLControl=new HTMLControl();
hc.load(t);
HTMLControl类中只有一个属性pdfCapability。此属性存储了PDF文件与Adobe Reader版本间的关系。在HTMLControl类的load方法执行后,自动得到版本信息。
23.1.3 使用HTMLPDFCapability类检测Adobe Reader版本
HTMLPDFCapability类定义了加载的PDF文件与Adobe Reader版本间的关系,使用状态字符串表示,如“ERROR_INSTALLED_READER_NOT_FOUND”。HTMLPDFCapability类的状态字符串如表23-1所示。
表23-1 HTMLPDFCapability类的状态字符串
状 态 名
说 明
HTMLPDFCapability.STATUS_OK
系统中已安装Adobe Reader 8.1以上版本
HTMLPDFCapability.ERROR_INSTALLED_READER_NOT_FOUND
系统中未安装Adobe Reader
HTMLPDFCapability.ERROR_INSTALLED_READER_TOO_OLD
系统中Adobe Reader版本太旧
HTMLPDFCapability.ERROR_PREFERRED_READER_TOO_OLD
当前有旧的Adobe Reader版本正在读取PDF
使用HTMLControl类的pdfCapability属性和HTMLPDFCapability类的状态字符串就能确定PDF文件与Adobe Reader版本间的关系。
以下代码表示系统中已安装Adobe Reader 8.1以上版本,可正常加载的PDF文件。
if(ht.pdfCapability==HTMLPDFCapability.STATUS_OK)
{
Alert.show("加载PDF正常");
}
23.1.4 加载PDF文件实例
加载PDF文件的步骤如下所示。
新建AIR工程。
确定系统中已安装Adobe Reader 8.1以上版本。
编写MXML文件。
MXML程序中主要处理是在初始化应用程序时加载PDF文件,并将结果添加到<mx:HTML>组件。以下代码加载PDF文件“1.pdf”并显示于<mx:HTML>组件上。
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"creationComplete="initApp()">
<mx:Script>
<![CDATA[
import flash.html.HTMLPDFCapability; //引用HTMLPDFCapability类
import flash.html.HTMLControl; //引用HTMLControl类
import mx.controls.Alert; //引用Alert类
//应用程序初始化函数
private function initApp():void
{
//Adobe Reader 8.1版本以上已安装时,加载pdf
if(HTMLControl.pdfCapability==HTMLPDFCapability.STATUS_OK)
{
var request:URLRequest = new URLRequest("1.pdf");//定义URLRequest实例
var pdf:HTMLControl = new HTMLControl(); //定义HTML
Control实例
pdf.height = 800; //设置pdf高度
pdf.width = 600; //设置pdf宽度
pdf.load(request); //加载pdf
container.addChild(pdf); //将pdf添加到HTML组件上
}
else
Alert.show("pdf不能显示,请安装Adobe Reader 8.1以上版本");
}
]]>
</mx:Script>
<mx:HTML id="container"/>
</mx:WindowedApplication>
(33) “if(HTMLControl.pdfCapability==HTMLPDFCapability.STATUS_OK)”语句用以判断系统中是否安装Adobe Reader 8.1以上版本。若未安装,则加载PDF文件不能完成。
(34) PDF文件只能显示于<mx:HTML>组件中。“container.addChild(pdf);”语句表示在<mx:HTML>组件中添加PDF文件数据。
按下Ctrl+F11键,编译运行程序。运行效果如图23-1所示。
图23-1 加载PDF文件效果
23.2 使用本地SQL数据库
SQL数据库是指可使用标准的SQL语句进行操作的数据库。本地SQL数据库是指操作系统支持的SQL数据库,如“.db”格式的数据库。AIR应用程序中新增了一些类(在“flash.data.*”包中),用以支持对本地SQL数据库的操作。对SQL数据库的基本操作包括Select(读取数据)、Insert(插入数据)、Update(修改数据)、Delete(删除数据)。本章将介绍对SQL数据库操作的基本语句及如何使用新增类操作数据库。
23.2.1 使用Select语句读取数据
Select语句用以读取表中的数据,其语法如下所示。
Select 列名1[as 别名1],列名2[as 别名2],…,列名n[as 别名n] from表名 where 条件
(35) 列名是指表中的列的名称。
(36) 用户可为列名取别名。此项默认与列名相同。
(37) 条件是指对数据的约束。例如,取表中考试成绩不及格的学生信息。
以下代码从学生成绩表“StudentScore”中读取不及格学生的学号、姓名、班级、成绩。
Select studentId as 学号,studentName as 姓名,studentClass as 班级,score as 成绩 from StudentScore where score<60
若读取表中的全部数据列,可使用“*”符。
若上述“StudentScore”表中只有学号、姓名、班级、成绩四列,读取数据的代码可如下所示。
Select * from StudentScore where score<60
23.2.2 使用Insert语句添加数据
Insert语句用以向表中添加数据,其语法如下所示。
Insert into 表名(列名1,列名2,...,列名n) values (数值1,数值2,…数值n)
(38) 列名必须是表中存在的列的名称。
(39) 数值顺序对应列名顺序,如数值1赋值给列名1。
以下代码向学生成绩表“StudentScore”中添加一条数据。
Insert into StudentScore(studentId,studentName,score) values (‘08’,’小明’,77)
对于字符串数据使用单引号封闭,数值不需要单引号封闭。
上述语法可选择性地添加列数据。例如,表中有四列,但只添加其中三列的数据。若对全部列添加数据可省略列名,其语法如下所示。
Insert into 表名 values (数值1,数值2,…数值n)
数值顺序必须严格遵循表中列的顺序。数值个数必须与列的个数相同。
以下代码向学生成绩表“StudentScore”中添加一条完整数据。
Insert into StudentScore values (‘08’,’小明’,’高三5班’,77)
23.2.3 使用Update语句修改数据
Update语句用以修改表中的数据,其语法如下所示。
Update 表名 set 列名1=修改值1,列名2=修改值2,…,列名n=修改值n where 条件
Update可修改表中的单条记录或多条记录。使用条件语句来控制修改范围。
以下代码使用Update语句将成绩59分修改为60分(及格)。
Update StudentScore set score=60 where score=59
需要注意的是,SQL语句中判断相等的操作符为“=”,而不是“==”。赋值语句使用Set子句或Select子句(Select语句的另外一种用法)。
若用户只想修改单条记录,可定义更加严格的条件。以下代码将小明同学的成绩59分提高到60分。
Update StudentScore set score=60 where score=59 and studentName=’小明’
23.2.4 使用Delete语句删除数据
Delete语句用以删除表中的数据,其语法如下所示。
Delete from表名 where 条件
Delete语句可删除单条记录或多条记录,方法是控制条件范围。以下代码使用Delete语句删除“高三5班”学生信息。
Delete from StudentScore where studentClass=’高三5班’
以下代码删除学号为“08”的学生信息。
Delete from StudentScore where studentId=’08’
23.2.5 使用SQLConnection类连接数据库
SQLConnection类用于连接数据库。对于要操作的数据库都应新建SQLConnection类实例。其语法如下所示。
var SQLConnection变量: SQLConnection=new SQLConnection();
以下代码定义了一个SQLConnection实例conn。
var conn:SQLConnection=new SQLConnection();
使用SQLConnection类的“open”方法打开数据库连接。其语法如下所示。
SQLConnection变量.open(File变量);
以下代码使用open方法打开本地SQL数据库“School.db”。
var conn:SQLConnection=new SQLConnection();
var dbFile:File =File.applicationResourceDirectory.resolve("School.db");
conn.open(dbFile);
(40) “File.applicationResourceDirectory”语句表示工程资源路径,即“bin”文件夹路径。
(41) resolve方法用以扩展文件路径,可看作是“\”符。
23.2.6 使用SQLStatement类执行SQL语句
SQLStatement类用于执行SQL语句,是操作SQL数据库的重要类。使用SQLStatement类的步骤如下。
定义SQLStatement类实例,其语法如下所示。
var SQLStatement变量:SQLStatement=new SQLStatement();
以下代码定义了一个SQLStatement类实例sqlcmd。
var sqlcmd:SQLStatement=new SQLStatement();
指向其使用的数据库。SQLStatement实例必须指明应用的数据库,即指向SQLConnection实例。SQLStatement实例指向数据库的语法如下所示。
SQLStatement变量.sqlConnection=SQLConnection变量;
sqlConnection属性类型为SQLConnection,表示指向的数据库实例。以下代码中SQLStatement实例stmt指向数据库实例conn。
var conn:SQLConnection=new Connection();
var dbFile:File = File.applicationResourceDirectory.resolve("School.db");
conn.open(dbFile);
var stmt:SQLStatement=new SQLStatement();
stmt.sqlConnection=conn;
为SQLStatement实例定义SQL语句。其语法如下所示。
SQLStatement变量.text="SQL语句";
text属性类型为String,用于定义SQL语句。以下代码为SQLStatement实例stmt定义SQL语句“select * from table”。
var stmt:SQLStatement=new SQLStatement();
stmt.text="select * from table";
执行SQLStatement实例。执行SQLStatement实例的结果是执行SQL语句。使用SQLStatement类的excute方法开始执行SQL语句。其语法如下所示。
SQLStatement变量.excute();
以下代码使用excute方法开始执行SQL语句“select * from table”。
var stmt:SQLStatement=new SQLStatement();
stmt.text="select * from table";
stmt.excute();
为SQLStatement实例添加监听。执行SQLStatement实例后的状态有很多,常用的是正常返回结果和运行异常两种。需要对两个状态都添加监听。为SQLStatement实例添加监听的语法如下所示。
SQLStatement变量.addEventListener(监听状态,处理函数);
以下代码为“SQLEvent.RESULT”(正常返回结果)和“SQLErrorEvent.ERROR”(运行异常)状态添加监听。
stmt.addEventListener(SQLEvent.RESULT,showDataResult);
stmt.addEventListener(SQLErrorEvent.ERROR, errorHandle);
(42) SQLEvent.RESULT状态表示SQLStatement实例执行成功并返回结果。
(43) SQLErrorEvent.ERROR状态表示SQLStatement实例执行异常。
获取返回数据集。执行有返回数据的SQL语句,数据集存储于SQLStatement实例中。使用SQLStatement类的getResult方法可得到数据集。其语法如下所示。
SQLStatement变量.getResult().data;
以下代码使用getResult方法获得SQL语句“select * from table”的执行结果。
var stmt:SQLStatement=new SQLStatement();
stmt.text="select * from table";
stmt.excute(); //执行SQL语句
stmt.addEventListener(SQLEvent.RESULT,showDataResult);
…
function showDataResult(e:SQLEvent):void
{
var t:Array=stmt.getResult().data as Array; //获得结果集
}
23.2.7 操作本地SQL数据库实例
本小节以实例为读者讲解如何使用SQL语句操作数据库,其步骤如下所示。
设计数据库“School”。“School”数据库中只有一张表“Notes”,用以存储通知信息。“Notes”表的列设计如表23-2所示。
表23-2 “Notes”表的设计说明
列 名
类 型
说 明
是否为主码
noteId
integer
通知id
是
title
text
标题
content
text
内容
publisher
text
发布者
以下代码是创建表的SQL语句。
CREATE TABLE IF NOT EXISTS Notes
(
noteId INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
content TEXT,
publisher TEXT,
)
(44) 此SQL语句在应用程序中定义并执行。
(45) “IF NOT EXISTS Notes”语句表示创建表“Notes”前先判断是否已存在此表。若已存在“Notes”表,不执行此创建语句。
(46) “noteId INTEGER PRIMARY KEY AUTOINCREMENT”表示“noteId”列为interger型(整型)、主码、新增记录时自动增1。
新建AIR工程。
设计应用程序的外观模型。
此实例包括一个DataGrid组件,用以绑定数据。一些输入框及按钮,为数据插入数据库作准备。以下代码是外观模型生成的MXML代码。
<mx:Panel >
<mx:DataGrid id="dg" verticalScrollPolicy="auto">
<mx:columns>
<mx:DataGridColumn headerText="编号" dataField="noteId"/>
<mx:DataGridColumn headerText="标题" dataField="title"/>
<mx:DataGridColumn headerText="内容" dataField="content"/>
<mx:DataGridColumn headerText="发布者" dataField="publisher"/>
</mx:columns>
</mx:DataGrid>
<mx:Canvas height="259" width="401">
<mx:Label text="标题" x="10" y="12"/>
<mx:TextInput x="69" y="10" width="296" id="txtTitle"/>
<mx:Label text="内容" x="10" y="51"/>
<mx:TextArea x="69" y="50" width="296" height="110" id="txtContent"/>
<mx:Label text="发布者" x="10" y="171"/>
<mx:TextInput width="92" id="txtPublisher" x="69" y="169"/>
<mx:Button label="确定" id="btnOk" click="insertDataHandle();" x="69" y="218"/>
</mx:Canvas>
</mx:Panel>
设计模式下的外观模型效果如图23-2所示。
图23-2 操作SQL数据库实例的外观效果
连接“School”数据库。本实例中在工程“bin”文件夹下创建“School.db”数据库,并使用SQLConnection类连接数据库。以下代码创建“School.db”数据库,并使用SQLConnection类连接。
private var conn:SQLConnection = new SQLConnection(); //定义SQLConnection实例
private var dbFile:File = File.applicationResourceDirectory.resolve ("School.db"); //定义数据库文件路径
…
conn.open(dbFile); //打开数据库文件
File类中的resolve方法用以定位文件。若指定路径下的文件不存在将自动创建。
创建“Notes”表。在连接数据库“School.db”后,创建“Notes”表。方法是使用SQL语句创建。以下代码使用SQLStatement类执行SQL语句,从而创建“Notes”表。
private var createStmt:SQLStatement=new SQLStatement();//定义SQLStatement实例
//数据库文件打开后的处理函数
private function openHandler(e:SQLEvent):void
{
createStmt.sqlConnection = conn; //定义语句连接的数据库
//sql语句创建表Notes
var sql:String ="CREATE TABLE IF NOT EXISTS Notes ("
+"noteId INTEGER PRIMARY KEY AUTOINCREMENT,"
+"title TEXT,"
+"content TEXT,"
+"publisher TEXT"
+")";
createStmt.text = sql;
createStmt.execute(); //执行sql语句
}
获得数据集并显示于DataGrid组件中。在执行完创建表的SQL语句后,使用Select语句获取“Notes”表中的全部数据,并绑定至DataGrid组件上。以下代码使用SQLStatement实例createStmt执行Select语句,从而获得“Notes”表中的数据,并显示于DataGrid组件。
//创建完表或已存在表时显示表中的数据
private function createTableResult(e:SQLEvent):void
{
createStmt.sqlConnection = conn; //定义语句连接的数据库
createStmt.text ="select * from Notes";
//添加对SQLEvent.RESULT状态的监听
createStmt.addEventListener(SQLEvent.RESULT,showDataResult);
createStmt.execute(); //执行sql语句
}
//显示数据处理函数
private function showDataResult(event:SQLEvent):void
{
dg.dataProvider=createStmt.getResult().data; //绑定数据集
}
向数据库中插入数据。当单击“确定”按钮时,使用Insert语句将数据插入到数据库中。以下代码使用SQLStatement实例stmt执行Insert语句,从而向“Notes”表中插入新数据。
//插入数据处理函数
private function insertDataHandle():void
{
var stmt:SQLStatement=new SQLStatement();
stmt.sqlConnection = conn; //定义语句连接的数据库
stmt.text ="insert into Notes(title,content,publisher) values('"
+txtTitle.text+"','"
+txtContent.text+"','"
+txtPublisher.text+"')";
stmt.execute(); //执行sql语句
}
完成剩余代码。应用程序剩余的代码包括初始化函数initApp、运行异常处理函数errorHandle、引用不同类等。
以下是应用程序的完整代码。
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication width="600"
fontSize="13" height="500"
xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete ="initApp()">
<mx:Script>
<![CDATA[
import flash.data.SQLConnection; //引用SQLConnection类
import flash.data.SQLStatement; //引用SQLStatement类
import flash.events.SQLErrorEvent; //引用SQLErrorEvent类
import flash.events.SQLEvent; //引用SQLEvent类
import flash.filesystem.File; //引用File类
import mx.controls.Alert; //引用Alert类
private var conn:SQLConnection = new SQLConnection(); //定义SQLConnection实例
private var createStmt:SQLStatement=new SQLStatement(); //定义SQLStatement实例
//定义数据库文件路径
private var dbFile:File = File.applicationResourceDirectory. resolve("School.db");
//应用程序初始化处理函数
public function initApp():void
{
conn.addEventListener(SQLEvent.OPEN, openHandler); //监听SQLEvent.OPEN状态
//监听SQLErrorEvent.ERROR状态
conn.addEventListener(SQLErrorEvent.ERROR, errorHandle);
conn.open(dbFile); //打开数据库文件
}
//数据库文件打开后的处理函数
private function openHandler(e:SQLEvent):void
{
createStmt.sqlConnection = conn; //定义语句连接的数据库
//sql语句创建表Notes
var sql:String ="CREATE TABLE IF NOT EXISTS Notes ("
+ "noteId INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "title TEXT,"
+ "content TEXT,"
+ "publisher TEXT"
+ ")";
createStmt.text = sql;
//添加对SQLEvent.RESULT状态的监听
createStmt.addEventListener(SQLEvent.RESULT,createTableResult);
//监听SQLErrorEvent.ERROR状态
createStmt.addEventListener(SQLErrorEvent.ERROR, errorHandle);
createStmt.execute(); //执行sql语句
}
//创建完表或已存在表时显示表中的数据
private function createTableResult(e:SQLEvent):void
{
createStmt.sqlConnection = conn; //定义语句连接的数据库
createStmt.text ="select * from Notes";
//添加对SQLEvent.RESULT状态的监听
createStmt.addEventListener(SQLEvent.RESULT,showDataResult);
//监听SQLErrorEvent.ERROR状态
createStmt.addEventListener(SQLErrorEvent.ERROR, errorHandle);
createStmt.execute(); //执行sql语句
}
//显示数据处理函数
private function showDataResult(event:SQLEvent):void
{
dg.dataProvider=createStmt.getResult().data; //绑定数据集
}
//插入数据处理函数
private function insertDataHandle():void
{
var stmt:SQLStatement=new SQLStatement();
stmt.sqlConnection = conn; //定义语句连接的数据库
stmt.text ="insert into Notes(title,content,publisher) values('"
+txtTitle.text+"','"
+txtContent.text+"','"
+txtPublisher.text+"')";
//添加对SQLEvent.RESULT状态的监听
createStmt.addEventListener(SQLEvent.RESULT,showDataResult);
//监听SQLErrorEvent.ERROR状态
stmt.addEventListener(SQLErrorEvent.ERROR, errorHandle);
stmt.execute(); //执行sql语句
}
//对数据库操作出错时的处理函数
private function errorHandle(event:SQLErrorEvent):void
{
Alert.show("Details:", event.error.message);
}
]]>
</mx:Script>
<mx:Panel >
<!--DataGrid组件,用以显示数据-->
<mx:DataGrid id="dg" verticalScrollPolicy="auto">
<mx:columns>
<mx:DataGridColumn headerText="编号" dataField="noteId"/>
<mx:DataGridColumn headerText="标题" dataField="title"/>
<mx:DataGridColumn headerText="内容" dataField="content"/>
<mx:DataGridColumn headerText="发布者" dataField="publisher"/>
</mx:columns>
</mx:DataGrid>
<mx:Canvas height="259" width="401">
<mx:Label text="标题" x="10" y="12"/>
<mx:TextInput x="69" y="10" width="296" id="txtTitle"/> <!--“标题”输入框-->
<mx:Label text="内容" x="10" y="51"/>
<!--“内容”输入框-->
<mx:TextArea x="69" y="50" width="296" height="110" id="txtContent"/>
<mx:Label text="发布者" x="10" y="171"/>
<mx:TextInput width="92" id="txtPublisher" x="69" y="169"/> <!--"发布者"输入框-->
<!--按钮组件,用以添加数据-->
<mx:Button label="确定" id="btnOk" click="insertDataHandle();" x="69" y="218"/>
</mx:Canvas>
</mx:Panel>
</mx:WindowedApplication>
发表评论
-
Flex远程调用机制RemoteObject应用技巧
2009-07-15 17:52 1297本文主要讨论Flex在客户端与J2EE中间层数据交互的过程。 ... -
Flex RemoteObject类参考
2009-07-15 17:46 1023<mx:RemoteObject>标记允许使用AM ... -
Flex与Java的整合
2009-07-15 16:07 1440整合Flex和Java—配置篇 Author:yongtre ... -
Flex与JavaScript的交互:调用与被调用
2009-04-16 13:50 1041一、在JavaScript中调用Fle ... -
flex3.0新特性(2)---升级AIR应用程序, Flex 3.0中使用Ajax技术
2009-04-14 13:52 258423.3 升级AIR应用程序 AIR桌面应用程序可导出为ai ... -
Flex3.0新特性2----Flex-Ajax Bridge
2009-04-14 10:52 432523.5 使用Flex-Ajax Bridge ... -
FABridge
2009-04-14 10:38 2804使用方法: 解释: 1. 由于swf(基 ... -
学习Flex的超好网站
2009-04-09 16:31 822http://www.airia.cn
相关推荐
9. **学习资源**:为了精通Flex 3.0,可以参考官方文档、在线教程、书籍和社区论坛,如Adobe Developer Connection、Flextras等,这些资源提供了丰富的学习材料和实例代码。 10. **源码分析**:压缩包中的"源码...
Flex 3 Flex 2 技巧 Flex编译器支持条件编译 精通Flex 3.0――14.1 LCDS介绍 ...精通Flex 3.0――4.7.1 加载服务端数据 精通Flex 3.0――4.7.2 基于Socket的连接 精通Flex 3.0――4.8 使用事件处理类
本资源包含的是Flex 3.0的源代码,对于深入理解和学习Flex技术具有很高的价值。 在学习Flex 3.0源代码时,有几个关键知识点值得我们关注: 1. **ActionScript 3.0**:Flex 3.0基于ActionScript 3.0,这是一种面向...
《ACTIONSCRIPT 3.0 编程指南》-----Flex编程必备,值得一看的必备资料
《精通Flex 3.0——基于ActionScript 3.0实现》一书源代码。 Flex 3.0 ActionScript 3.0源代码 Flex 3.0源代码。 --------------------------- 第1篇 Flex技术概述 第1章 Flex概述 3 1.1 Flex简介 3 1.2 Flex...
本资源包中的六个可执行文件(01.exe至06.exe)可能是Flex 3.0开发环境或相关工具的安装程序,用于在用户的计算机上部署Flex开发环境。 Flex 3.0 知识点详解: 1. **ActionScript 3.0**:Flex 3.0 引入了...
《FLASH-FLEX3.0开发教程中文版(例子源码)》是一份全面介绍Adobe Flex 3.0技术的教程,特别适合初学者和有一定基础的开发者深入学习。Flex是基于ActionScript 3.0的开放源代码框架,主要用于构建富互联网应用程序...
这个"完全自学flex3.0随书源码"的资源包含了学习Flex 3.0过程中可能需要的所有源代码示例,对于初学者来说是极有价值的参考资料。 1. **Flex SDK与Flex Builder** Flex SDK是免费的开发工具,包含编译器、库和...
Flex SDK包含了开发Flex应用所需的所有工具,包括编译器、Flex Builder IDE的支持文件以及ActionScript 3.0库。开发者可以使用免费的SDK,配合文本编辑器进行开发,或者选择购买Adobe Flex Builder来获得更强大的...
Flex 3.0的资源管理是其重要特性之一。资源可以包括字符串、图像、样式和其他可重用的UI元素。这些资源通常被集中存储在库或者外部文件中,以便在多个组件或模块间共享。通过使用资源管理器,开发者可以方便地导入、...
在Flex 3.0中,LCDS(LiveCycle Data Services)是关键的数据服务层,它扩展了Flex对后端数据的访问能力,而ActionScript则是Flex中的主要编程语言,用于实现业务逻辑和交互控制。 1. **Flex 3.0基础** - **MXML**...
1. **Spark组件架构**:Flex 3.0引入了全新的Spark组件架构,这是对原有的MX组件的重大改进。Spark组件更加轻量级,性能更优,同时提供了更好的自定义和扩展性。它们遵循更加严格的MXML和CSS设计原则,使得UI设计...
FLEX 3.0程序开发技术详解(下).pdf
Flex3.0学习版快速入门提高版,简单轻松,操作容易。学习简单,很清楚地描述了怎么从零凯斯学习Flex的开发。
Flex 3.0还支持开发桌面应用程序,通过Adobe AIR(Adobe Integrated Runtime),开发者可以创建具有Flash特性的桌面应用,同时利用本地文件系统、操作系统功能和离线存储。 总之,"FLEX3.0最新相关技术手册"涵盖了...
1. In Adobe Flash Builder, create a new Flex project (File -> New -> Flex project). 2. Copy all the contents of the ArcGIS_Flex\samples\src folder to src folder of the Flex project created above. 3....
1. **UI组件**:Flex提供了丰富的用户界面组件,如Button、Label、TextArea等。源码解析将展示这些组件是如何被创建和管理的,以及如何通过MXML和ActionScript进行自定义。 2. **数据绑定**:Flex的数据绑定机制...
《ArcGIS Viewer for Flex 3.0 源码解析》 ArcGIS Viewer for Flex 3.0 是Esri公司开发的一款基于Adobe Flex技术的Web GIS应用框架,它提供了丰富的地图展示、地理分析和信息共享功能,使得开发者能够快速构建交互...