【发布时间】:2012-11-19 22:49:14
【问题描述】:
我有一个继承自 NetConnection 的类,具有以下功能:
override public function connect(command:String, ... arguments):void
{
addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
super.connect(command, arguments);
}
我想要做的实际上是这样的:
override public function connect(command:String, ... arguments):void
{
m_iTries = 0;
m_strCommand = command;
m_arguments = arguments;
addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
super.connect(command, arguments);
}
private function onNetStatus(pEvent:NetStatusEvent):void
{
if (/* some logic involving the code and the value of m_iTries */)
{
super.connect(m_strCommand, m_arguments);
}
else
{
// do something different
}
}
这在 AS3 中可能吗?如果是这样,怎么做?我将如何声明变量、设置变量、将其传递给函数等?谢谢!
【问题讨论】:
-
你是说你上面的代码行不通吗?我从来没有尝试过,但你上面的代码是我期望它工作的方式。
arguments参数是Array,因此您只需声明一个成员变量 (private var m_argument:Array),并按照您所做的那样分配它。唉,看起来简单的东西实际上可能行不通:) -
它看起来不能工作。不过谢谢! “如果您传递 Array 类的实例,则整个数组将被放入 ...(rest)参数数组的单个元素中。” help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/…
-
好的,我现在明白了,谢谢你的解释......现在我明白了,我会考虑这个:)
-
您需要使用 Function.apply() 使其按书面方式工作,例如
super.connect.apply(super, m_arguments);- 允许您像传递参数列表一样传递数组。但请注意,您必须先将“命令”添加到数组中,然后再将其传递给 super.connect.apply。 -
@TheKaneda 好电话,您应该将其发布为答案!
标签: actionscript-3 apache-flex syntax flash