Actionscript 3 AS3:装载机全部在一条线上?
我习惯于看到Loader类这样使用:Actionscript 3 AS3:装载机全部在一条线上?,actionscript-3,loader,Actionscript 3,Loader,我习惯于看到Loader类这样使用: var loader:Loader = new Loader(); loader.loadBytes(myByteArray); addChild(loader); 但后来我遇到了一些代码,它们都是在一行中完成的: Loader(addChild(new Loader())).loadBytes(myByteArray); 这两者有什么区别?一种方式比另一种好吗?有人能解释一下第二个版本到底发生了什么吗?几乎没有什么区别,而第一个版本“更好”,因为它实际
var loader:Loader = new Loader();
loader.loadBytes(myByteArray);
addChild(loader);
但后来我遇到了一些代码,它们都是在一行中完成的:
Loader(addChild(new Loader())).loadBytes(myByteArray);
这两者有什么区别?一种方式比另一种好吗?有人能解释一下第二个版本到底发生了什么吗?几乎没有什么区别,而第一个版本“更好”,因为它实际上是可读的 要分解它:
Loader(addChild(new Loader()).loadBytes(myByteArray)代码>
我们将某物强制转换为类型为Loader
:Loader(…)
然后,我们用addChild
将一个DisplayObject添加到当前的displaylist中,它将返回我们添加的DisplayObject(这样我们实际上可以将某个对象转换为其他对象)
所讨论的DisplayObject是一个加载程序
对象,我们为此创建了一个新对象
因此,Loader(addChild(new Loader())
创建一个新的Loader对象并将其添加到显示列表中。但这还是没用的,因为装载机需要,嗯,装载一些东西,对吗?这就是为什么我们首先将整个DisplayObject强制转换为加载程序
,以便使用其方法,例如loadBytes(bytearray)
。如果您不将整个内容放入加载程序(…)
cast,您将无法访问这些方法,因为addChild将只返回DisplayObject类型的对象,而不返回Loader
总而言之,这对表现没有任何影响,只是为了同样的目标而缩短了写作风格。如果您是唯一一个在项目中看到此代码的人,那么这很好。如果没有,考虑其他人也应该能够阅读代码,而不必打破它一步一步。< / P >啊谢谢!我没意识到最外面的装弹工正在发射它。我在考虑带参数的静态函数。