Topic: flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载

  Print this page

1.flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-01-08 11:46

第Ⅰ篇 Java for Flash基础入门

学习任何技术都有一个基础知识,Java for Flash也不例外。本篇包含几个章节,介绍了Java for Flash的基本知识。

在第一章,我们介绍了如何安装和配置Java for Flash的开发和运行环境,这样,用户就可以开发Flash网络应用程序以实现和Java应用程序的交互。

在随后的几章,我们介绍了如何使用Java语言、如何使用JDBC结合数据库以及面向对象的Java开发。

而在第五章,我们开始使用传统的JSP网页作为中间件方法开发Flash网络应用程序,与服务器之间实现数据交换,了解了如何建立网络环境的最一般原理,有了基本的创建具有网络交互功能Flash影片应用程序的基本知识,这是实现使用Flash影片应用程序作为网络应用程序主体的一次“飞跃”。

现在马上出发

作者邀您访问他的BLOG:http://zhang-yafei.spaces.live.com (繁体)
作者邀您访问他的BLOG:http://blog.csdn.net/zhang_yafei(简体)

2.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-01-09 11:22

第01章 开发和运行环境的安装与配置
《Java for Flash动态网站开发手札》又被称之为网络三剑客,它提供了使用Flash Player、XML和Java建立下一代网络应用程序最迅速、最大限度节省投资和最具有挑战性的方法组合,这一组合事实上包含四个方面:Flash Player的应用环境、XML的应用环境、Java应用环境以及这三个应用环境的相互关联。
在Flash Player、XML和Java这三剑客组成的软件运行环境中:Java是基础架构,它为Java应用程序提供运行环境,并且JSP、Servlet、JavaBeans、EJB、JMX MBean等程序组件都是在后端运行;Flash Player是Flash影片应用程序在前端运行的解释器(也是一个虚拟机),必须安装在客户端。Flash Remoting是Flash影片应用程序连接到Java程序的服务器和网关,它们之间的连接也是在后端运行。
本章我们就来介绍怎样安装和配置网络三剑客的开发和运行环境。

1.1新架构的优点
使用网络三剑客架构,事实上包含四个方面:Flash Player的应用环境、XML的应用环境、Java应用环境以及这三个应用环境的相互关联。
XML:标准的数据交换格式
尽管简单得令人难以置信,XML确实正在彻底改变我们创建和使用软件的方式。WEB彻底改变了用户与应用程序的交互方式:通过提供一种能使数据更易适配或更易转换的通用数据格式,XML正在彻底改变应用程序间的交互方式——或者更广义地说,计算机间的交互方式。包括SOAP和UDDI 在内的基于XML的标准,构成了应用程序间通信的开放式方法,此方法叫做XML WEB服务,而我更愿意称之为SOAP-RPC。
Java:开放的、成熟的和规范的基础架构
Java是目前市场上主流的企业及分布式应用程序开发平台,它是在Sun公司的领导下,多家公司参与共同制定的应用程序开发规范,正是因为它是一种规范、它的开放性,所以能够得到了业界的广泛支持。并且经历了几年的发展,Java已经经受住了市场的考验,成为一种成熟的开发平台。使用Java架构能够快速、高效的开发出可移植的、跨平台的、具有强大功能的企业级Web应用程序。
Java包含多种技术,它们之间互为补充,实现不同功能。包括:Java Servlet技术、Java Server Page(JSP)技术、JavaBeans技术、EJB技术等。
通过JSP(最终被编译成Servlet)和Servlet这一中间件,我们可以在Flash Player与服务端之间进行数据交换;而通过Java和Flash Remoting这两个中间件,使得创建服务端与Flash Player的关系变得更加容易,更加轻松自如。
Flash Player:跨平台跨设备的富媒体客户环境
Flash Player是功能强大的富媒体客户环境,只要平台或设备上正确的安装了Flash Player,用户就可以浏览使用Flash影片应用程序。
如同Java一样,Flash影片应用程序同样具备了一次开发,可以跨平台跨设备随意浏览的特性(而且不需要重新编译),这就是Flash的一个最大的优点。无论是在Windows、Mac、Linux、Unix还是在Symbian操作系统(Nokia应用于移动电话的一种操作系统)上,也不论你是在桌面PC上还是在掌上电脑或是移动电话上,Flash影片应用程序都能发挥它最大的特点。这一点我们想着重的作一下对比,如表1.1所示:



Flash Player内建的ActionScript脚本语言是Flash Player的交互语言,它有几个版本,每种版本的ActionScript的语法和风格各不相同,但可以在同一个运行时下协调工作。Flash Player不但可以凭借内建的XML类加载和解析标准的XML数据。而且通过Flash Remoting MX很轻松的连接到一个应用程序开发人员要使用的远程服务端和WEB服务并实现数据交换,使得Flash影片应用程序的开发简单有效。
并且,随着Flash Media Server(简称FMS)的发布,用户更可以将视频和音频(包括实时视频和音频)集成到应用程序中,实现声音、图像、文字、数据同步传播。并且,你也可以将声音、图像、文字、数据等录制下来,通过eMail发送出去(需要编程实现)。
并且,FMS服务器和Flash Remoting MX可以无缝的集成到一块儿。有了FMS服务器和Flash Remoting MX的集成,你从而可以连接数据库以及驱动Java应用程序服务器以创建功能更强的Flash影片应用程序,并将其融入到Flash Player当中,从而为终端用户带来全新的富媒体应用程序体验。
和传统的基于HTML的浏览器应用程序相比,Flash影片应用程序在创建动态和复杂的、友好的用户界面方面有其独到的优势,包括:
1Flash Player运行时执行代码、传递数据和调用远程服务
2客户端展示逻辑与服务端应用程序逻辑相互独立
3有效的利用带宽,不需要刷新整个网页,使用矢量图形
4可以部署在多个平台和设备上,并且非常简单
这就是深具魅力的《Java for Flash动态网站开发手札》。
技巧与提示
用户必须区分Flash Remoting MX和Flash Remoting。Flash Remoting MX是Macromedia的一款产品,在本书中我时常称之为AMF-RPC(本书中同时介绍的OpenAMF是AMF-RPC的另一种实现)。
Flash Remoting是一个宽泛的定义,包括XML-RPC、WDDX-RPC、RTMP-RPC(也就是FMS)等都可以称为Flash Remoting。而Flash Remoting MX(AMF-RPC)仅是Flash Remoting中的一种。

3.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-01-14 22:42

第Ⅱ篇 Flash网络应用程序和Flash Remoting

在第一篇,我们介绍了Java for Flash的基本原理,了解了怎样使用Flash内建的功能方法与Java实现交互,这种交互方式其实是一种极其简单的HTTP操作,来回传递的都是字符串格式的数据(XML也是字符串,需要解析为DOM)。

人们需要一种更为简洁的方式能够实现类似Native的操作,于是Flash Remoting便应运而生,这符合IT工业的一贯标准。

在这一篇,我们将介绍怎样使用包括XML-RPC、WDDX、SOAP和AMF-RPC(包括Flash Remoting MX和OpenAMF)等在内的Flash Remoting技术,开发人员可以更轻松的完成过去需要编写很多代码才能完成的任务。

本篇包含很多的章节,是本书的主体部分,主要就是介绍怎样使用各种Remoting工具实现Java for Flash的强大体验。

4.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: friendship
Posted on: 2007-01-16 11:04

Big Smile

5.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: friendship] Copy to clipboard
Posted by: nanshanwentao
Posted on: 2007-01-17 05:40

有点意识,这个领域前景应该不错

6.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: nanshanwentao] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-01-20 10:56

SmileSmileSmileSmileSmileSmileSmileSmileSmile

7.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-01-20 10:56

第06章 AMF-RPC for Java基础入门

在前面的章节,我们介绍了Flash如何通过中间件JSP与服务器之间实现数据交换,了解了Flash影片应用程序如何融入到网络应用环境的最一般原理,有了基本的创建具有网络交互功能Flash影片应用程序的基本知识。

这一章,我们将开始使用Flash的一个最重要的服务器组件AMF-RPC来实现与Flash影片应用程序的交互,用户可以感受到更加强烈的Flash网络应用程序“感觉”,从而可以更轻松的创建功能更强大的Flash网络应用程序——这就是“富媒体应用程序”。

使用Flash作为开发工具,我们现在可以开始学习怎样使用AMF-RPC创建更为强大而且易用的富媒体应用程序了。

6.1 AMF-RPC技术简介

AMF-RPC是使用AMF 数据格式实现的远程方法调用,Macromedia公司为此出品了三个个实现:Flash Remoting MX for J2EE(以前也被称为Flash Remoting MX for Java)、Flash Remoting MX for .NET和Flash Remoting MX for ColdFusion,并且开源社区也为AMF-RPC编写了一个在PHP架构下的实现,名为AMFPHP(也可以称为Flash Remoting MX for PHP)。

就如其它的RPC工具一样,AMF-RPC是一个应用程序服务器网关,它在Flash影片应用程序和远程服务之间提供一个相互通信的网络通道:在这个通道间传输的是AMF格式的数据(AMF是专用于Flash远程数据传输的一种数据格式);远程服务则包含各种应用服务技术(例如JavaBeans、ColdFusion组件和网页、ASP.NET网页或者Web服务等等)。

和其它的连接到外部数据提供者的技术相比,AMF-RPC的优点是不言而喻的。在前面一章我们介绍的像getURL、loadVariables、XML和XMLSocket等语句,它们都是使用的简单的HTTP功能,一般都离不开内建的类如Request和Response这样的语法,而AMF-RPC则有其独特的一面,总的说来有下列优点:

[1]易用。AMF-RPC可以对本地远程服务程序代码(Java,CFML,PHP和C#)的数据类型进行自动转换:可以转换成ActionScript代码数据类型,也可以转回本地远程服务程序代码数据类型。

[2]高性能。AMF-RPC使用Action Message Format(AMF)将Flash影片应用程序和远程服务之间的通信信息序列化。AMF是一个二进制格式,符合Simple Object Access Protocol(SOAP)协议格式,通信更加快速。

[3]可扩展性。AMF-RPC设计的时候集成了现有应用程序设计模式和最佳的开发实践,从而可以满足高度扩展性Flash网络应用程序设计要求。

要了解这些优点,最好是先来看一个简单的使用AMF-RPC创建的Flash网络应用程序。

8.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: okaimee
Posted on: 2007-01-20 11:35

嘻嘻,我倒是对这种新书的推销方式很感兴趣,好像这么做的越来越多了,不错不错,希望网络在各个行业中起到的作用越来越多^_^

9.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: okaimee] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-01-21 11:40


flash好是好,页面可以做的很眩,但是要从新学一个新的技术对于我来说花费太大了。。。


这是一个用户的留言,我想说几句:

技术不断的变化,如果不是想从事这方面的工作,真得很花时间。不过一旦学会就会不能自拔。

作为作者,尽量将知识理的更顺畅一些,建立一个与过去所学知识能够合理衔接的知识体系是非常关键的,这样可以为用户节省大量时间。

10.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-01-24 13:10

第09章 在Flash影片应用程序中处理结果和结果集对象

要连接到Java应用程序服务器上的FlashRemotingMX服务并且调用远程服务方法,就必须使用mx.remoting和mx.rpc这两个ActionScript类库:这两个类库包含了所有的FlashRemoting MX for ActionScript 2.0类和方法实现。

其中,mx.remoting是一个十分核心的ActionScript类库,它包含了用来与应用程序服务器建立连接的所有对象及方法,而mx.rpc可以用来调用远程方法并处理结果。

在前面的章节中,我们介绍了如何通过FlashRemotingMX网关服务在JSP网页和Servlet中向Flash影片应用程序传递数据,也介绍了如何使用Flash影片应用程序向JSP网页和Servlet传递参数,并且介绍了如何使用Flash Remoting MX forJava与JDBC结合调用数据库,而且创建了几个简单的例子。

但是,当从JSP网页和Servlet向Flash影片应用程序传递的数据被接收到时,如何处理接收到的结果呢?我们在前面的例子中已经使用了一些方法,这只是在Flash影片应用程序中处理结果丰富方法中最简单的,Flash Remoting MX for ActionScript2.0组件内置了丰富的ActionScript脚本语法用来处理结果。

本章就来详细地介绍一下这些ActionScript脚本语法。

9.4使用DataGlue类处理记录集数据

要在一个Flash UI组件中显示RecordSet记录集,一般可以使用该组件内建的setDataProvider()方法或者dataProvider属性,但是如果想在一个Flash UI组件中显示记录集中某一字段下的所有记录,就比较困难了。

例如,在前面的例子中,我们要在一个下拉列表框组件中显示记录集中酒店名,就必须首先创建一个新的单字段记录集,将原记录集中该字段的数据填充新的单字段记录集,然后再使用组件的setDataProvider()方法或者dataProvider属性,显然,这比较麻烦,而且占用的资源也比较多。

为了解决这个问题,Flash RemotingMX还内建了名为DataGlue的ActionScript类。使用DataGlueActionScript类文件也可以在一个FlashUI组件中显示RecordSet记录集。DataGlueActionScript类文件随同Flash RemotingMX组件一起被安装,要使用它,必须导入相应的类库,可以使用下面的一行脚本:

import mx.remoting.DataGlue;

DataGlue类有两个内建的方法:DataGlue.bindFormatStrings()和DataGlue.bindFormatFunction(),使用这两个方法都可以在Flash UI组件(例如组合框和列表框)中显示记录集。

9.4.1使用DataGlue.bindFormatStrings方法绑定记录集

可以使用DataGlue.bindFormatStrings()方法在一个FlashUI组件(例如组合框和列表框)中显示RecordSet。下面的一段ActionScript脚本代码将结果RecordSet绑定到名为displayNames的列表框UI组件:

DataGlue.bindFormatStrings(displayNames, result, "#ContactName#", "#customerID#");

在这一段代码中,后两个参数被传递给函数(#ContactName#和#customerID#是记录集的字段名)。当用户选择组件中一个特殊的纪录时,ContactName列被显示在UI组件中,而customerID列被返回。下面,我们来改造一下前面的例子,看一下如何使用DataGlue类。

1打开前面一章我们创建的Restaurant_component.fla文档,将文档另存为Restaurant_component_DataGlue.fla;

2保持当前位于主时间轴编辑状态,修改主时间轴上的脚本代码。在”动作”面板上追加下面的一行脚本代码:

import mx.remoting.DataGlue;

3在舞台上双击影片剪辑元件实例main_mc,使影片剪辑元件main处于编辑状态,选中层Script。保持该层被选中,在“动作”面板上修改其中的脚本代码:

将下面的一段脚本代码:

var newRecordSet:RecordSet = new RecordSet(["hotelName"]);

for (var i = 0; i<resultRecordSet.length; i++) {

newRecordSet.addItemAt(i, {hotelName:resultRecordSet.getItemAtLight Bulb.hotel_name});

}

if (newRecordSet.isLocal()) {

newRecordSet.addItemAt(0, {hotelName:"请选择一个酒家或酒店"});

hotelName_cb.dataProvider = newRecordSet;

}

替换为

DataGlue.bindFormatStrings(hotelName_cb, resultRecordSet, "#hotel_name#", "#hotel_name#");

可以看到,前面多行代码实现的功能,现在只需一行就可以实现了。

4因为现在是使用DataGlue类,所以对于UI组件的读取方式也应该改变一下。在本例中,这段脚本代码位于函数applyFilter()体内:

将下面的一段脚本代码

list_lb.dataProvider = resultRecordSet.filter(thisFilter, hotelName_cb.selectedItem["hotelName"]);

替换为

list_lb.dataProvider = resultRecordSet.filter(thisFilter, hotelName_cb.selectedItem.label);

5最后可以测试一下效果,可以看到与前面的例子功能相同。

9.5使用RemotingConnector组件和数据绑定

RemotingConnector是Flash的一个数据组件,使用该组件你可以非常轻松的建立与远程服务的连接——该远程服务必须是通过FlashRemotingMX网关提供——并且可以调用远程服务所定义的方法函数,使用它只需要将该组件拖放到舞台上并定义组件参数,而且可以使用Flash的数据绑定功能。

我们在这里要介绍的是首先是通过编写脚本代码的方式使用RemotingConnector组件。

9.5.1编写脚本代码使用RemotingConnector组件

要通过编写脚本代码的方式使用该组件,也必须首先在开始将RemotingConnector组件拖放到当前舞台上(或者只要在库中就可以了),然后才能开始编写代码使用该组件,这是使用该组件的第一步。

另外,在编写脚本代码时要导入RemotingConnector类,这是使用该组件编写脚本代码的第一步,可以使用下面的脚本语句:

import mx.data.components.RemotingConnector;

下面我们就使用一个例子来看一下怎样使用该组件。

1打开前面一节我们创建的Restaurant_component.fla文档,将文档另存为Restaurant_component_RC.fla;

2保持文档处于主时间轴的编辑状态,改变主时间轴上的脚本代码如下:

stop();

//-------------------------------------------------------------

//导入RemotingConnector类

import mx.data.components.RemotingConnector;

//构造RemotingConnector组件实例并定义实例属性

var my_rc:RemotingConnector = new RemotingConnector();

my_rc.addEventListener("result", returnRowSet_Result);

my_rc.addEventListener("status", returnRowSet_Status);

my_rc.gatewayUrl = "http://localhost:8080/3JK/gateway";

my_rc.methodName = "returnRowSet";

my_rc.serviceName = "3JK";

my_rc.suppressInvalidCalls = true;

function GetRestaurantInfo():Void {

if (selectedhotel_name == undefined&&selectedhotel_flavor == undefined &&selectedhotel_location ==undefined) {

//定义参数为空

my_rc.params = null;

//触发连接,调用远程服务方法

my_rc.trigger();

} else {

//定义传递给远程服务方法的参数

my_rc.params ={hotel_name:selectedhotel_name,hotel_flavor:selectedhotel_flavor,hotel_location:selectedhotel_location};

//触发连接,调用远程服务方法

my_rc.trigger();

selectedhotel_name = "正在加载数据";

}

}

function returnRowSet_Result(ev:Object) {

//接收结果

main_mc.list_lb.removeAll();

main_mc.list_lb.dataProvider = ev.target.results;

selectedhotel_name = "";

fetchOK = 1;

main_mc.resultRecordSet = ev.target.results;

}

function returnRowSet_Status(stat:Object) {

//接收错误

trace("接收到错误");

}

//初始化

function ini():Void {

if (this.inited != undefined) {

return;

} else {

var inited:Boolean = true;

GetRestaurantInfo();

}

}

ini();

3打开组件面板,将RemotingConnector组件拖放到舞台上创建一个实例(实际,只需放到库中就可以了)。

最后可以测试一下效果,可以看到与前面的例子功能相同。

11.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: java658
Posted on: 2007-01-26 10:14

顶,顶,顶,继续努力

12.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-01-28 21:54

针对一些用户提出FLEX与Flash的对比,很多人认为有了FLEX,Flash就完蛋了。

我想表达一下我的意见,我将FLEX看做是Flash的一个分支,因为一个不完正的IDE是不能给用户带来真正利益的,这仅是我个人的看法,如果您有更好的观点,我非常愿意听听。

13.flash java通讯——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-02-02 10:46

第15章 在Flash网络应用程序中应用XML(一)——基础应用

XML(可扩展标记语言)正日益成为Internet应用程序中结构化数据存储和交换的标准。Flash也把其数据集成功能完全架构于XML之上,使用Flash创作环境,你可以非常轻松的创建Flash影片应用程序和服务器端的XML技术结合起来,而应用Flash Remoting MX for Java,你也可以把Flash Actionscript数据与使用复杂应用程序(如地址薄、聊天系统或者表单验证系统)的服务器集成起来,这些复杂的应用程序也一般都是使用XML技术建立起来的。

XML语法类似于HTML,都是使用标签来描述一段文本。HTML的标签是预定义的、固定的,我们只能使用,不能修改;XML则不同,它没有预先定义好的标签可以使用,而是依据设计上的需要,自行定义标签(例如你可以定义标签来标示一段数据的类型,就象下面的一行语句:<password>VerySecret</password>)。XML把信息的结构和显示的方式分开,这就允许相同的XML文档在不同的环境中使用和重用。

每个XML标签被称为节点(或称为元素),每个节点属于一种类型(1-XML节点,或者3-文本节点),而且节点都有属性。嵌入在一个节点中的节点称为该节点的子(或者子节点),由此构成一个树型层级结构,称为 XML DOM(文件对象模型),与JavaScript DOM非常相似(JavaScript DOM是网络浏览器中JavaScript元素的结构)。

这一章我们首先介绍怎样在Java架构下创建、使用和处理XML文档的基本知识,然后介绍怎样使用Flash影片应用程序和Flash Remoting MX for Java应用XML文档。

要注意,本章并不对XML文档的概念作详细描述,如果你想了解XML文档的信息可以参考其它的文档和图书。另外,因为XML对象是标准的Actionscript对象,属于基本的Flash知识,并非Flash Remoting MX的组成部分,所以本书也不再对Flash Actionscript XML对象作过多地介绍。

15.1 Java和XML

XML是Java一个重要的组成部分,在Java应用程序的开发过程中,我们初步总结了一下,它主要扮演下面的几种角色:

1Web应用程序部署描述符(web.xml)

2标签库描述文件(TLD)

3企业Bean部署描述符(ejb-jar.xml)

4使用转换为不同类型的客户端创建多种数据视图

5用于SOAP和开发Web服务

6基于XML的B2B交换所用的DTD(文档类型定义)

15.4在Flash影片应用程序中使用XML

要在Flash影片应用程序中使用XML时,你可以使用下面的模式之一来处理XML数据:

1使用Flash影片应用程序可以直接调用XML文档并处理数据,这是Flash最早的功能之一;

2在Flash影片应用程序中不使用XML格式数据。Flash影片应用程序使用简单数据类型向服务器发送数据,如果需要的时候也可以使用XML对象。服务端方法可以产生并处理XML数据,这些函数可以将XML数据转化为简单数据类型,并传回Flash影片应用程序。

3在Flash影片应用程序中直接使用XML格式数据。服务端方法从Flash影片应用程序中获取XML,并将XML作为一个对象返回到Flash影片应用程序中。在Flash影片应用程序中使用ActionScript内建的XML对象和方法可以产生并处理XML。

针对这几种模式,也有不同的使用方法,下面,我们就来分别加以介绍它们的使用方法。

14.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-02-12 13:55

第Ⅲ篇 Flash网络应用程序和FMS

在前面的两篇,我们介绍了如何使用JSP网页结合Flash开发网络应用程序,也介绍了如何使用Flash Remoting(各种RPC)与Flash有效的结合,可以说已经可以创建数据驱动的富媒体应用程序了。
但是,Flash技术还远不止这些,围绕着Flash Player,Macromedia为用户带来了更为丰富的体验,这就是Flash Media Server(简称FMS)。
Macromedia于2002年年末发布了令人惊异的Flash Communication Server MX服务器(简称FCS),这是FMS的前一个版本。使用FMS,你只需要配备Web摄像头和麦克风,并加上十几行ActionScript脚本便可以完成一个电视会议系统。
FMS给全世界的人带来一种全新的通讯方式。有了FMS服务器,您可以参加实时网络会议;使用FMS的功能在工作中进行协作以及通过Internet或企业Intranet共享信息。
还不只是这一点,Flash Player的强大功能使得实时通讯和应用程序的集成由梦想变为现实,这正是未来网络软件发展的趋势,这都是Flash Player惹的“火”。
本篇将介绍如何将Java和FMS结合起来以创建更为强大的Flash网络应用程序。

15.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-03-06 11:39

第22章 FMS应用基础入门
Flash Media Server(简称FMS)服务器是用于用户之间相互通讯的新平台,它集成了Flash多媒体交互的特性,又添加了实时音频、实时视频和实时数据流等新特色,使用该平台,你可以通过网络存储录制下来的音频、视频,也可以共享数据对象,并且可以将这些音频、视频和共享数据对象传递给多个客户端,实现实时同步共享。该平台集成了通讯功能和应用程序功能,它通过Flash Player(Flash Player 6或更高)在客户端提供音频共享、视频共享和共享数据流。
FMS是一个完全基于软件环境的多媒体实时通讯环境,代表了当前实时通讯领域内的发展方向,并且,其自身也融合了大量的新特色,用于创建下一代通讯应用程序,这些新特色包括:
1它提供了一个高效高性能的运行时,该“运行时”不但可以用于执行代码、处理数据内容,并且还可以进行通讯。
2它将内容、通讯功能和应用程序界面集成进一个通用环境,这个通用环境就是Flash Player,通过强大且分布广泛的Flash Player,使得通过FMS进行通讯变得更加便利。
3它为交互性提供了强大、高扩展性的对象模型。在为FMS开发Flash通讯应用程序的过程中,您就会慢慢认识到FMS无处不在的面向对象开发的特点。
4它还建立了一个高效的组件架构模型,使用该组件架构模型可以创建高效的Flash通讯组件,而使用组件和其它的可重用模块,可以使你快速的开发基于FMS的通讯应用程序。
5它还允许使用应用程序服务器提供的web服务和数据服务,从而可以和其它的应用服务器技术结合起来以创建功能更强大、更完整的富媒体应用程序。
6它并且可以识别那些处于连接状态和处于未连接状态的客户端,以降低网络负载。
7使用它,你可以将通讯应用程序客户端轻松的部署在多个平台和设备上,这多亏了Flash Player的广泛使用。
使用FMS和Flash创作环境,你可以非常轻松迅速的创建即时通讯应用程序,它可以让两个或多个的用户实现即时交流(交流可以使用文字、音频和视频)。例如,你可以使用FMS创建会议系统、在线社区、客户支持、销售支持、培训、远程展示或者即时消息系统。FMS是一个实时数据流平台,使用该平台加上客户端Flash Player的支持,可以将实时的数据流通过网络传递到Internet、PDA、iTV或者其它的设备上。
FMS的功能平台由两部分组成:服务器提供通讯方式;Flash影片应用程序(SWF文件)提供终端用户界面。你可以使用Flash创作工具作为开发环境创建Flash影片应用程序,该影片应用程序使用FMS提供的服务(也就是位于FMS上的Flash通讯应用程序)。有时你也可以编写服务端脚本为通讯应用程序添加新的功能,使用服务端脚本可以更灵活的控制共享状态信息,并且可以作为一个负载平衡器调节多用户之间的实时交互。
FMS可以用来实现在Flash影片应用程序之间的实时通讯,这种实时通讯可以是一对一、一对多、多对一或者是多对多。
值得特别注意的是,FMS使用实时通讯协议(RTMP),RTMP 是一种未加密的TCP/IP协议,专门设计用来高速传送音频、视频和数据信息。
使用FMS可以捕获(甚至录制)用户客户端的视频和音频流。信息通过FMS使用Real-Time Messaging Protocol (RTMP)协议被传递到客户端(用户计算机上的Flash Player)。当一个Flash影片应用程序要使用 FMS时,Flash Player就连接到服务器,这样就在客户端Flash Player和FMS之间提供了往复的源源不断的信息流,称为network stream(网络流)。其他的用户也可以同时连接到相同的FMS接收信息、更新数据以及音频和视频,这些都是“网络流”。
技巧与提示
了解流媒体服务器
使用过Real Player、QuickTime的用户可能对流媒体已经熟悉了,但是可能还是对流媒体不是系统地了解过,下面我们来简单的介绍一下流媒体服务器。
过去,如果人们想从网络上观看影片或收听音乐,必须先将影音文件下载到本地计算机储存后,才可以播放,不但浪费下载时间、硬盘空间,也无法满足消费者使用方便及确切的需要。
而流媒体在播放时并不下载整个文件,只将开始部分内容读入本地计算机内存,在计算机中对发送来的数据包进行缓存并使媒体数据正确地输出到播放器。流媒体的数据流随时传送随时播放,只是在开始时有些延迟。在经过几秒或几十秒的启动延时后,用户就可以在本地计算机上利用解压缩设备(也就是播放器)对压缩的多媒体文件解压进行播放和观看(此时多媒体文件的剩余部分将在后台的服务器内继续下载到本地计算机内存。
与单纯的下载方式相比,这种对多媒体文件边下载边播入的流式传输方式不仅使启动延时大幅度地缩短,而且对系统缓存容量的需求也大大降低,极大地减少用户用在等待的时间。
要进行流媒体传输,其动力来源与数据供应商服务器上的流媒体服务器,例如Real Networks、Apple都为流媒体的传输提供了强大的服务器,但是流媒体最大的特点在于互动性,这也是互联网最具吸引力的地方,在这一点上,FMS有其自身的优势。
流媒体服务器和FMS的区别
FMS也是一个流媒体服务器,但是它的互动性显然是其它的流媒体服务器所不及的,它不但可以有效的处理影音数据(包括实时影音数据),而且,可以进行文本数据的实时通讯,更加有利的情况是它可以将这种流媒体能力和其它的应用程序服务器集成在一起,从而可以创建功能强大的富媒体应用程序,这就是互联网的明天。

我也邀请您经常访问我的BLOG:

http://zhang-yafei.spaces.live.com(繁体)
http://blog.csdn.net/zhang_yafei/(简体)

16.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-03-14 18:47

第25章 开发网上餐厅系统——架构的规划与设计
使用Flash和Flash Remoting MX For Java可以用来开发强大的网络数据库应用工程,不但简单、而且更富人性化,并且我们可以充分利用结构化的面向对象的Flash ActionScript脚本语言和简单易用的Flash Remoting MX For Java将网络应用工程变成结构化、易管理和更新的强大网络应用程序,使该工程可以适合任何网络应用工作。

一个强大的网络应用程序是一个非常复杂繁琐的事情,本章将创建一个较复杂的Flash网络应用程序,并为您详细地介绍如何使用Flash Remoting MX设计模式创建Flash影片应用程序功能和逻辑,如何在小组协作模式下开发Flash网络应用程序。从而,你可以非常清晰的理解到使用Flash开发的应用程序是多么富有魅力。

相信,您在阅读完本章就会马上爱上使用Flash和Flash Remoting MX For Java开发网络应用工程。

25.1规划设计网络应用程序工程
“御膳房”网上餐厅系统是我们的一个E-Commerce工程,在这里,我们简化了该工程以作为本书的实例,这样比较适合读者理解和学习如何使用Flash和Flash Remoting MX for Java开发网络应用程序。

对于任何一个应用程序,哪怕是非常小的应用程序,事先的规划设计是非常重要的,一个非常好的规划是应用程序开发迅速高效的有力保障,因此,我们先来对该应用程序做一个基本的规划设计。

应用程序基本的规划设计包括系统和用户的分析评估、运行平台的选用、开发平台的选用、数据库的选用和设计等等一些内容,这需要开发人员综合的能力,有时候需要集体的智慧,更多的是该软件系统规划师的个人能力。下面我们来简单的看一下该网络应用程序的规划和设计(这里,我们忽略了对系统和用户的分析评估,而且,应当特别指出的是,该实例已经做了修改以应用于本书的需要,您不得将此例用于商业目的)。

25.1.1选用开发和运行平台
当前流行的系统运行平台无非是四种:微软公司的.NET平台、SUN公司的Java平台、Macromedia公司的ColdFusion以及流行于Linux操作系统和Windows操作系统下的PHP。本书并不对这四种平台的优劣作何分析和评价,因为每一平台都有优势也有不足。

正如您看到的,本书选用了Sun公司的Java平台作为本例的开发和运行的系统平台。

25.1.2数据库的选择
数据库的选择是一件很简单但又很头疼的事情,这是任何应用程序开发人员都会碰到的,因为现在数据库产品种类繁多,适用面也很广,企业级的数据库包括SQL Server、DB2、Informix、Oracle等,本书选用Access纯粹是为了大多数用户学习的需要,实际很少用于实际工作中。

我们使用Access创建了几个数据库表:buy、myUsers、productDetail和seat,并创建了表之间的关系,如图25.1所示:



图25.1 数据库表及表之间的关系

25.1.3创建JDBC连接
数据库应用程序设计的第一步就是创建JDBC连接,这里我们使用JDBC-ODBC桥。首先创建ODBC连接,定义系统DSN名为ysfDb。

25.1.4规划应用程序的结构
一个规范强大的应用工程往往是由一个紧密协作的团队来完成的,而要将如此复杂的工程分割于不同的成员来完成,就必须首先规划应用程序的结构。使用Flash创建应用工程也不例外,但是你很快就会发现使用Flash创建应用工程非常有特色,有利于团队的协作完成。

在本应用工程中,我们将它分割为9个相互独立的功能模块,由一个主程序引导,其结构如图25.2所示:



图25.2 模块结构

17.《Java for Flash动态网站开发手札》_部分章节连载(大结局) [Re: zhangyafei] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-03-20 22:52

第26章 开发网上餐厅系统——项目小组协作创建功能模块

接下来我们要开始创建本例中最核心的内容模块了,每一模块可以有一个小组来完成,下面我们就来看一下如何创建这些内容模块。
26.1创建“首页”(home)模块

在创建该模块之前我们先来看一下该模块的功能和完成后的效果(当然,在实际工作中不可能先看到完成后的效果,这里只是为了使您更好的学习怎样创建内容),如图26.1所示:

图26.1 模块总体效果

26.3创建“特色菜肴”(food)模块

“特色菜肴”(food)模块是本餐厅的核心模块之一,利用该模块,用户可以查看餐厅的各种菜肴,并可以提前预订。

下面我们就来看一下该模块的界面和功能操作,如图26.15所示:

图26.15 总体效果

使用该模块,你可以选择不同的品种菜肴,察看该菜肴的详细情况,包括察看该菜肴的制作过程(如果有的化);如果觉得该菜肴比较好,那么比就可以点击“放入购物车”按钮预定该菜肴;你也可以使用购物车管理要预定的菜肴,包括取消预定、统计等;最后,要使预定生效(写入数据库),点击“购买”按钮。

了解了“特色菜肴”(food)模块的界面和功能操作,下面我们就来制作该模块。

26.4创建“预定座位”(reserve)模块

“预定座位”(reserve)模块可以让用户在网上察看到经营餐厅的座位布局(包括每一座位能够容纳的客人数),并可以搜索某一特定时间范围内座位的预定情况,从而可以根据实际情况预定自己所钟爱的座位(尤其对那些老顾客来说,这一功能是吸引回头客的有效手段)。

下面我们就来看一下该模块的界面和功能操作,如图26.26所示:

图26.26 总体效果图

用户如果要预定座位可以首先通过检索某一时间范围内座位的预定情况,如果从检索的结果看到某一座位没有预定,那么就可以点击该座位图标预定,对于那些在该时间段内已经预订的座位来说,座位图标就显示为已经预订的状态(座位旁已经有人入座),这样用户就能一目了然,从容的根据系统的提示信息预定自己想要的座位了。

如果你不想查询,也可以通过视频和语音方式联系客服来预定座位,如图26.27所示:

图26.27总体效果图

了解了“预定座位”(reserve)模块的界面和功能操作,下面我们就来制作该模块。

启动Flash创作环境,新建一个文档,将该文档舞台幅面大小设置为590X435,将其保存到C:\resin\webapps\YSF\reserve目录下,文件名为reserve.fla。

26.4.1准备必要的资源

在这个Flash影片应用程序模块中,我们要用到几个重要的图像素材资源,包含这样几个基本图像:座位图像(包括方形座位和圆形座位,以及入座的人员)、信息提示对话框将要用到的图标(包括信息提示图标、出错状态提示图标等),此外还有搜索按钮(这可以从前面的模块文档中获取)。

1.创建提示对话框的图标

首先我们来创建用于信息提示对话框的图标:

1按Ctrl+ F8键分别新建四个影片剪辑元件:Alert_infoIcon、Alert_errorIcon、Alert_questionIcon和Alert_warningIcon,如图26.28所示:





图26.28 图标元件

注意这些影片剪辑元件的注册点(Registration)位于左上角。

2 图标影片剪辑元件的设计完成后,接下来就是为这四个影片剪辑元件定义”标识符”,根据前面的方法介绍,我们将四个影片剪辑元件的”标识符”与它们的名称设置成同样,分别是: Alert_infoIcon、Alert_errorIcon、Alert_questionIcon和Alert_warningIcon。这样,这些图标影片剪辑元件就可以被Alert组件调用了。
26.6.3创建Flash影片应用程序处理CSS和HTML文档

该Flash影片应用程序非常简单,你可以先来看一下完成的SWF文档,如图26.35所示:

图26.35 总体效果

可以看到,在该应用程序界面上仅有一个文本框和三个按钮,下面我们就来创建它:

1启动Flash创作环境,新建一个文档,设置舞台幅面大小为590X435,将文档保存到YSF\history目录下,文件名为history.fla;

2新建一个影片剪辑元件main,保持该元件处于编辑状态,在舞台上绘制一个背景图案,与舞台幅面大小相同。

拖一个TextArea组件到舞台上创建实例,用来显示一些重要的信息(可以是图文混排的方式),命名实例名为main_txt。并且创建一个静态文本框作为该模块的标题。

然后将前面我们创建的按钮元件login btn拖放到当前文档的舞台上创建三个实例,将这三个实例和TextArea组件实例按照需求和喜好排列好,并分别为三个按钮实例定义相应的标签及实例名:first_btn、two_btn、three_btn,最后的舞台效果如图26.36所示:

图26.36 舞台效果

3在上面,设计的工作已经全部完成,下面我们来编写脚本加载样式表文档并处理HTML文档以完成该模块的功能。在库面板中双击影片剪辑元件main使它处于编辑状态,在帧中编写脚本代码如下:

stop();

var storyKissesML = new XML();

//--------------------------------------------------------------------------------

function init() {

var ss:TextField.StyleSheet = new TextField.StyleSheet();

ss.load("history/content/history.css");

main_txt.styleSheet = ss;

main_txt.html = true;

main_txt.wordWrap = true;

main_txt.editable = false;

main_txt.multiline = true;

//----------------------------------------------------------------------------

story.ignoreWhite = true;

story.load("history/content/introduction.html");

story.onLoad = function() {

trace(story);

main_txt.text = story;

};

}

//--------------------------------------------------------------------------------

this.first_btn.onRelease = function() {

story.load("history/content/introduction.html");

};

this.two_btn.onRelease = function() {

story.load("history/content/frame.html");

};

this.three_btn.onRelease = function() {

story.load("history/content/future.html");

};

//-------------------------------------------------------

init();

按Ctrl+Enter键生成一个SWF文档。现在你可以启动主引导模块测试一下效果,以做出相应的修改。

18.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-04-28 19:03

好久不来,想不到就随波逐流了。

19.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-07-24 04:14

本书完全适用于新版Flash cs3,请严格按照书中介绍的步骤进行配置。

20.Re:flash java结合开发的利器——《Java for Flash动态网站开发手札》_部分章节连载 [Re: zhangyafei] Copy to clipboard
Posted by: zhangyafei
Posted on: 2007-08-12 22:41

我的blog正准备重新设计一下布局,欢迎您经常参观,特别欢迎您提出意见。

http://zhang-yafei.spaces.live.com


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923