Flash 从Actionscript中的加载程序接收数据
这是我在Adobe文档页面上注意到的 从URL接收文本文件时,设置文本的函数如下所示:Flash 从Actionscript中的加载程序接收数据,flash,actionscript-3,Flash,Actionscript 3,这是我在Adobe文档页面上注意到的 从URL接收文本文件时,设置文本的函数如下所示: function completeHandler(event:Event):void { var txt:String = URLLoader(event.currentTarget).data as String; tf.text = txt; ... } 或者这个: function completeHandler(event:Event):void { tf.text
function completeHandler(event:Event):void {
var txt:String = URLLoader(event.currentTarget).data as String;
tf.text = txt;
...
}
或者这个:
function completeHandler(event:Event):void {
tf.text = URLLoader(event.target).data;
...
}
我自己,我总是这样做:
function completeHandler(event:Event):void {
tf.text = event.target.data;
...
}
所以我的问题是:我应该注意到有什么重要的区别吗?如果这三种方法都很好地工作,并且它们都能完成您需要它们做的事情,那么就没有什么显著的区别,只是类型转换-使用对您更容易的方法。:) 三者之间唯一可能的、有益的区别是铸造。通过强制转换loaders数据对象的结果,您基本上做了两件事:将类型强制到数据上,从而基本上执行类型检查;其次,您显式地告诉虚拟机它正在处理什么类型的数据,而不是让它自己弄清楚。第二点,这可能会提高性能。关于强制转换和类型检查的第一点,请允许我提供一个场景。假设您正在加载一个XML文件。也许您所要做的就是像在这里所做的那样在文本字段中显示XML,但是您需要确保它是有效的XML。您可以在try/catch语句中将结果显式转换为XML,如下所示:
function completeHandler(event:Event):void {
var res:XML;
try{
res = new XML(e.currentTarget.data);
tf.text = res.toString();
}catch(e:Error){
//Do something or nothing about this error
tf.text = "You have attempted to open an XML file containing mal-formed XML data.";
}
}
正如你所看到的,这不仅仅是个人选择的问题。性能和良好实践中的简单编程开始发挥作用。ActionScript3是一种严格类型化的语言,其原因是:严格类型化既能确保正确的功能,又能实现优化/更好/更干净的执行。证明这一点的一个事实是actionscript 2,非严格类型的虚拟机,它的运行速度比AVM2(actionscript 3 vm)慢20倍左右。没问题,很高兴我能帮忙:)