`
giky2323
  • 浏览: 28185 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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中建的相同,“= ”号也不能少;
%>
分享到:
评论

相关推荐

    flash与jsp通信

    Tomcat直接放到服务器下就可以了,比如我的是……\Apache Software Foundation\Tomcat 6.0\webapps\,于是我的文件树就变成了……\Apache Software Foundation\Tomcat 6.0\webapps\flash\(flash.jsp,LoadVars.swf,...

    FLASH AS3 loading 源文件 源代码

    FLASH AS3 loading 源文件 源代码

    flash action script 经典字典教程大全,学flash必备

    flash action script 经典字典教程大全,学flash必备 -- --(递减) ++ ++(递增) ! !(逻辑 NOT) != !=(不等于) !== !==(不全等) % %(模) %= %=(模赋值) & &(按位 AND 运算符) && ...

    图文演示Flash+ASP+access实现用户登录/注册程序(含源程序)

    图文演示Flash+ASP+access实现用户登录/注册程序 ...//将window组件设置为不可用.因为是做背景 win.enabled = false; //新建LoadVars对象,用来发送和接收数据; 。。。。。。。。。。。。。。。。。。。。。。。。

    Flash – data communication

    Flash – data communication(DOC,PPT,CODE) AMF ,FLASHVARS, FLEXDATALOADING,GETURL, LOADVARS,SERVERCODE,WEBSITE,XML,XML-LOADVARS

    转盘Flash源代码

    var ld = new LoadVars(); var _l2; ld.load("http://joy.t2cn.com/platform/getActiveUser.action", "_root", "GET"); ld.onLoad = function (succ) { if (succ) { trace(ld.arg1); _root.mc_users.txt_...

    ServerPush

    以告警数据为例,告警数据通过mq、socket等方式进入系统,在java服务器通过监听来监听消息队列数据,接收...至于XML, LoadVars和loadVariables() ,它们使用纯文本的传输方式,效能就更不能与Flash Remoting相提并论了

    asp.net知识库

    使用microsoft.web.ui.webcontrols的TabStrip与IFame组件,达到页的切换效果 HttpModule 实现 ASP.Net (*.aspx) 中文简繁体的自动转换,不用修改原有的任何代码,直接部署即可! 服务器自定义开发二之客户端脚本回发 Web...

Global site tag (gtag.js) - Google Analytics