Flash专栏: 基础教程 | 技巧运用 | MTV实例教程 | 游戏实例教程 | 实例教程 | AS教程(new)
photoshop专栏: 基础 | 进阶 | 技巧总汇 | 精彩实例 | 文字特效 | 滤镜魔术 | 实际应用
网页设计: Dreamweaver教程 | FireWorks教程 | CorelDraw设计 | Freehand/Illustrator教程 | 音乐转换教程
其他教程: 操作系统 | 程序设计 | 网站开发 | 图形图像 | 数据库 | 网络技术 | 安全相关 | 认证考试 | 硬件知识 | 服务器
Flash专栏>Flash技巧运用>让Flex像Flash那样传递参数   返回上一页

  日期:2006-03-24 16 作者:ai829 来源:闪客帝国
天气预报 IP地址 手机号码 邮编 翻译 在线代理 在线评书 好dj


让Flex像Flash那样传递参数


众所周知,在Flash中是这样传递参数的:

代码:

var myloadvars:LoadVars = new LoadVars();
myloadvars.load("test3.jsp");
myloadvars.onLoad = function(success){
if (success){
var a:String = this.myVars;
trace(a);
}
}

  在Flex中比较常见的都是用WEBService,HTTPServive等来和后台进行数据通信的,通常是用XML做为通讯介质的,但有时候,在数据量不大,对结构化要求不高是,我们依然希望采用在Flash中比较熟悉的LoadVars,下面介绍如何让Flex像Flash那样传递参数:

  首先,我们要有个输出参数的Jsp

test3.jsp:
代码:

<%@ page contentType="text/html;charset=utf-8"%>
<%
out.println("&myVars=ai829");
%>

  其次,在mxml里有两种方式实现像Flash那样通讯

  第一种方法就是用LoadVars:

LoadVars.mxml:
代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" initialize="initApp();">

<mx:Script>
<![CDATA[
import mx.utils.*;

function initApp(){
var myloadvars:LoadVars = new LoadVars();
myloadvars.load("test3.jsp");
myloadvars.onLoad = function(success){
if (success){
var a:String = this.myVars;
alert(a);
}
}
}
]]>
</mx:Script>
</mx:Application>

以上是老方法,就不多说了,况且很不安全.

第二种方法就是用HTTPService,一般在用HTTPService时resultFormat默认是XML,现在我们要把它改成flashvars.
这样我们就像Flash那样传递参数,又可以用Flex的whitelist来保证安全,一举两得!

flashvars.mxml
代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" initialize="initApp();">

<mx:HTTPService id="hs_01" url="test3.jsp" showBusyCursor="true" result="onLoad();" resultFormat="flashvars"/>

<mx:Script>
<![CDATA[
import mx.utils.*;

function initApp(){
/*var myloadvars:LoadVars = new LoadVars();
myloadvars.load("test3.jsp");
myloadvars.onLoad = function(success){
if (success){
var a:String = this.myVars;
alert(a);
}
}*/
hs_01.send();

}
function onLoad(Void):Void{

var a:String = hs_01.result.myVars;
alert(a);
txt.text=hs_01.result.myVars;
}
]]>
</mx:Script>
<mx:TextInput id="txt" />
</mx:Application>

  注意在接收数据时一定要把接收数据的function放到result里,这样才能正常工作.result就相当于LoadVars 里的那个onLoad method。

编辑:卡其色


 
高手云集 版权所有 1998-2006