Actionscript 3 AS3:装载机全部在一条线上?

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); 这两者有什么区别?一种方式比另一种好吗?有人能解释一下第二个版本到底发生了什么吗?几乎没有什么区别,而第一个版本“更好”,因为它实际

我习惯于看到Loader类这样使用:

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 >啊谢谢!我没意识到最外面的装弹工正在发射它。我在考虑带参数的静态函数。