佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 2091|回复: 9

[教程]LoadVars和loadVariables

[复制链接]
发表于 11-1-2005 07:57 AM | 显示全部楼层 |阅读模式
作者:Super-Tomato



LoadVars和loadVariables有何不同呢?

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事件也就马上会回传载入不成功的布林值。

评分

参与人数 1积分 +8 收起 理由
jeeshyan + 8 我很赞同 谢谢你。

查看全部评分

回复

使用道具 举报


ADVERTISEMENT

发表于 11-1-2005 11:16 AM | 显示全部楼层
回家试试,在这里学到的as还真多.......
回复

使用道具 举报

 楼主| 发表于 11-1-2005 02:23 PM | 显示全部楼层
能够学习到就好 :)
回复

使用道具 举报

发表于 23-1-2005 01:07 AM | 显示全部楼层
谢谢这位老师的教诲。。
回复

使用道具 举报

 楼主| 发表于 23-1-2005 07:37 PM | 显示全部楼层
在Flash中loadVariables或LoadVars是不可或缺的,希望能够把这些基础学好
回复

使用道具 举报

发表于 24-1-2005 12:20 AM | 显示全部楼层
那么老师要多多发教学。。。。。。
回复

使用道具 举报

Follow Us
发表于 18-2-2005 09:48 AM | 显示全部楼层
有问题:
1)btn.onRelease = function() {trace(myText); },里面的function()是何意思?
2)System.useCodepage = true;这有何用处?
3)为了证明载入完后才能显示那段code,不太明白他如何证明,那loadVariables("external.txt",_level0); trace(myText); 不是已经说明他已把external.txt载入了吗?
回复

使用道具 举报

 楼主| 发表于 18-2-2005 03:05 PM | 显示全部楼层
1,3 去测试,不要什么都没做。这样学不到东西的

2。去看Flash提供的文档,我的教程是教如何应用,而不是指令解释
回复

使用道具 举报


ADVERTISEMENT

发表于 21-2-2005 08:41 AM | 显示全部楼层
不好议事,1&3我已试过,在电脑面前三个钟头,出来的答案和你给的一样,但就是不名白他是如何run,(我的意识是他读到某排时,他run了什么),也试过更改些code,出来不同的答案,可是不明白为何改某某code,会有这答案,(@_@,嘻嘻,也不名白自己在问什么了)
回复

使用道具 举报

发表于 18-8-2005 03:41 AM | 显示全部楼层
谢谢楼主,学懂了,没有你,我真的不知道如何完成任务。谢谢。感激不尽。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 1-6-2024 06:33 AM , Processed in 0.062137 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表