jsp与flash通信 用loadvars函数

关于LoadVars
作者:Super-Tomato 类型:原创 来源:闪吧  
loadVariables这个指令并不陌生,在MX版本之前就已经存在了,而为何在MX版本开始要增加多一个LoadVars事件呢?
我想很多人都在使用loadVariables吧,简单而且不用像LoadVars那样麻烦还要写一大堆,这也是这两个时间不同的关键所在。
对于不懂的朋友,那么我们先来建立一个外部文件,然后再看看loadVariables和LoadVars的写法:

external.txt


myText=这是外部文件

那么先来看看loadVariables的写法:


loadVariables("external.txt",_level0);
btn.onRelease = function() {
trace(myText); //获得的输出结果是 “这是外部文件”
}

这样就可以很顺利的取得外部文件的变量myText的值了,但是如果我们不是要在按钮事件发生之后才取得变量呢?
我们也来试试看把之前的代码改成


loadVariables("external.txt",_level0);
trace(myText); //获得的输出结果是 “undefined”

为何会不一样呢? 原因很简单,因为要取得外部变量之前,我们必须先载入该文件完毕之后才能够取得当中的变量。简单来说就像你是用loadMovie载入图片,在此图片还没有载入完毕之前你是无法知道图片的宽度,高度,颜色等资料。为了证明出这样的结果,我们再把之前的代码修改一下


System.useCodepage = true;
loadVariables("external.txt", _level0);

onEnterFrame = function() {
for(var i in _level0) {
if( i == "myText") {
delete this.onEnterFrame;
}
trace(i);
}
trace("--------------------");
}
trace("myText = "+myText+"\n");


我们使用循环追踪变量myText的结果如下:


myText = undefined //这里是一开始我们所要取得myText变量的结果

onEnterFrame //这里是第一次循环,可以得到的只有三个变量,就是循环本身,Flash版本和按钮
$version
btn
--------------------
myText //而在第二次循环的情况下我们可以看到了,场景中已经完全载入好外部文件并取得当中的变量了
onEnterFrame
$version
btn
--------------------


所以从以上来看,要使用loadVariables取得外部就必须是在按钮事件或自己定义循环侦测,这样的伸缩性就不大。因此在我以前使

用Flash 5时做起事情来可是蛮费时间,幸好MX版本之后出现了LoadVars以解决这个恼人的问题。

那么LoadVars怎么使用呢?那么我们再建立一个Flash文件,输入以下代码然后和external.txt储存在同一路径后测试


System.useCodepage = true;
var myLoad = new LoadVars(); //定义LoadVars这个类
myLoad.load("external.txt"); //指定LoadVars载入external.txt这个文件
myLoad.onLoad = function(success) { //LoadVars的载入事件
if(success) {
trace(this.myText);
}
}


看到输出结果了吗?是不是只多几行代码就可以达到你所要的结果。在LoadVars最主要的关键就是onLoad事件了,在这个事件中会回传一个布林值,即代表了通知代码文件是否已经载入成功。所以在onLoad事件当中我们最好使用if来判断回传值是成功还是失败,如果成功的话文件中的变量会以object的方式储存在LoadVars当中,所以我们可以使用myLoad.myText或this.myText来取得。

这也是很多人没去看帮助档就提问为何trace()在onLoad事件之外就无法取得变量,此onLoad方法既然可以判断文件可否被载入,当然也可以拿来测试文件是否存在。如果指定的文件不存在,onLoad事件也就马上会回传载入不成功的布林值。

如果用JSP搞可以改下这点代码:
myLoad.load("http://localhost:8080/work5/back/test.jsp");
JSP页面这样写:
<%@ page contentType="text/html;charset=gb2312"%>
<%
String tmp="中文";
out.println("&str="+tmp);//这里一定要写成"&str="的形式,&一定不能少,str的名字要与你a中建的相同,“= ”号也不能少;
%>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值