AS3,澄清了这个'指针

时间:2016-06-14 17:01:12

标签: actionscript-3 this

我正在写一个flex程序,我遇到了这个指针的问题。

我在函数内部有一个函数调用,我想知道我的this指针传递了哪个事件。

private function funcA(someArgument)
{
    newDialog.show("Title", "Body", funcB, this) // the 'this' is the argument for funcB
}

private function funcB(CloseEvent:event)
{
   if(event == Event.CANCEL)
      doStuff;
   if(event == Event.COMPLETE)
      doOtherStuff;
}

为了澄清,我的问题是,当我将this指针传递给newDialog中的函数时,我是通过新创建的Dialogue还是我传入funcA。我正在思考并希望它是前者。

我只是手动测试,但系统非常大,目前与其他事件捆绑在一起,所以我很难实例化对象来测试它们。

2 个答案:

答案 0 :(得分:1)

虽然null是正确的,但funcB上的方法签名看起来应该作为事件监听器添加。 funcB期待一个事件。所有事件都有一个属性target,它是调度事件的实际对象,currentTarget,它是被侦听的对象。这些只会在显示列表中冒泡事件的情况下有所不同,其中子对象确实调度了事件。

如果您发现此代码的类不是Event的子类,我会期望funcB非常难以出错。如果它是Event的子类,它就不应该是,因为funcA中的功能不应该是事件的责任。

答案 1 :(得分:0)

  

当我将this指针传递给newDialog中的函数时,我是通过新创建的Dialogue还是我传入funcA。

都不是。

您有private function,是class的成员。为了调用function,必须创建一个对象,该对象是class的实例,然后可以在该对象上调用funcA

this是对该对象的引用。