无论是传统的Web应用程序还是RIA很多时候需要和服务器连接。当我们用Flash进行典型的“三层开发”时,Flash 播放器取代了传统层客户端浏览器。所谓Flash与服务器端的通信,就是指 Flash如何跟逻辑层的服务器端编程语言交换数据。
我们可以把整个服务器端的程序当成一个黑盒子,不用去了解它怎样连接数据库,又如何存取数据表的内容。但是我们必须知道它如何处理结果显示在Flash客户端。
不论你采用那种技术来开发服务器端程序,都应该遵守以下原则:
- 接受资料的客户端是Flash,不是浏览器,因此动态网页中不要有HTML标签。
- 所有传给服务器端的数据,必须使用“名称-值”配对的格式或XML格式(下次再讲)
- Flash MX及更高版本输入/输出的数据的编码格式是UTF-8(Unicode),所以输入Flash的数据必须经过UTF-8编码才能正确显示中文。一般将代码存成UTF-8格式就可以了, 也可以在Flash中指定System对象的useCodepage属性为true来编码。
什么是“名称-值”配对?大家应该记得Flash读取的外部文件变量的格式吧。格式是:变量1=变量值 &变量2=变量值。如name = "jim"&age = "28",其中name和age都是变量,jim与28分别为它们对应的值。多个变量用 &连接起来,类似于URL中查询字符串的格式。
注意:不管是“名称-值”的格式还是XML格式,值都是以字符串形式传递到Flash中。
只要遵循上述格式,就可以用任何一种后台语言输出适合Flash读取的动态数据。常见的有:
- ASP与ASP.net输出数据的格式:<%Response.Write("变量1=变量值&变量2=变量值")%>
- PHP输出数据的格式:<?php echo("变量1=变量值&变量2=变量值") ?>
- JSP输出数据的格式:<% out.print("变量1=变量值&变量2=变量值"); %>
- ColdFusion输出数据的格式:<cfoutput>变量1=变量值&变量2=变量值</cfoutput>
Flash与后台连接方法很多,比如说使用loadVariables函数、LoadVars对象、XML对象、XML Socket对象、Flash Remoting和Webservice。
其中loadVariables函数Flash Player 4就开始支持了,它只能接收字符串变量,没有属性方法,加之也没有事件处理函数,因此逐渐被遗弃了。 我们这里也就不再过多讨论它了,直接从LoadVars对象开始。